Пакет Java - для создания и импорта кнопки при необходимости - PullRequest
0 голосов
/ 10 апреля 2010

Это больше похоже на тестирование пакета / импорта. Мы начнем с моей базовой папки ... / javaf / test.java

Моя цель - создать подкатегорию и создать класс с кнопкой, которую я могу импортировать в test.java, когда мне нужна кнопка. Я чувствую, что все сделал правильно, я знаю, что кнопка на данный момент ничего не делает, но я просто хочу заставить все это работать и расширять код после этого. Так что здесь идет - это test.java

import paket.*;  // importing classes from subcategory paket!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;


public class test {

    public test() {
        JFrame myFrame;
        JPanel myPanel;
        myFrame = new JFrame("Hello FramWorld");
        myPanel = new JPanel();

        // Here I want to add the object created in paket/myButts.java
        // The problem is how to make these two lines work.
        myButts myButton = new myButts();
        myPanel.add(myButton);


        myFrame.setVisible(true);
        myFrame.getContentPane().add(myPanel, BorderLayout.CENTER);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.pack(); 
    }

    public static void main(String args[]) {
        new test();
    }
}

А вот и мой ... / javaf / paket / myButts.java

package paket; // Here is the package function (ought to work like a link)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

// This class should only create a button.

public class myButts {  
    public myButts() {
        JButton myButt = new JButton();
    }
}

Я скомпилировал myButts.java без ошибок. Но затем я компилирую test.java, и он выдает мне следующую ошибку:

test.java: 19: не удается найти символ символ: метод add (paket.myButts) расположение: класс javax.swing.JPanel myPanel.add (MyButton);

Спасибо за чтение, Z

Ответы [ 2 ]

1 голос
/ 10 апреля 2010

Я думаю, что вы хотите:

public class myButts extends JButton {  

}

Если вы хотите добавить экземпляры вашего класса непосредственно в элементы управления Swing, он должен расширять тип Swing или AWT (в данном случае JButton).

Раньше вы только что создали локальный JButton в конструкторе, который не использовался и был недоступен повсюду.

Как примечание, лучше всего попытаться следовать руководству по стилю Java , в частности соглашениям об именах . Классы рекомендуется использовать в смешанном регистре, например MyButton.

0 голосов
/ 10 апреля 2010

Ошибка:

test.java:19: cannot find symbol symbol : method add(paket.myButts) location: class javax.swing.JPanel myPanel.add(myButton);

Это означает, что класс JPanel не имеет метода add, который принимает параметр paket.myButts. Давайте посмотрим на документацию JPanel , чтобы увидеть, какие у нее есть add методы. Есть 5 add методов, унаследованных от Контейнера, и один от Компонента. Этот метод , как и большинство из них, требует, чтобы вы передали объект Component. Для этого требуется передать объект PopupMenu.

Так что кажется, что ваш объект paket.myButts не является Component или PopupMenu, и должен быть. Может быть заманчиво заставить ваш myButts расширить Компонент. Так что взгляните на документацию Component , чтобы увидеть, что вы получите. Обратите внимание, что есть несколько подклассов, которые уже были предоставлены:

Кнопка, Холст, Флажок, Выбор, Контейнер, Метка, Список, Полоса прокрутки, Компонент текста

Теперь, так как вы действительно хотите кнопку, вы можете догадаться, что myButts имеет смысл расширить Button. Это сработает, и вы получите awt.Button. Однако, если вы продолжите изучение, некоторые из подклассов контейнера - это классы swing , включая JButton. Я бы порекомендовал использовать эти классы свинга.

Как только вы это сделаете, ваш конструктор должен принять следующую форму:

public class myButts extends JButton {  
  public myButts() {
    super();
    // here put any myButts-specific construction code, such as:
    setText("Press me!");
  }
}

Для более общего знакомства с использованием компонентов Swing я настоятельно рекомендую превосходное руководство по Swing .

...