Создание объектов для каждой кнопки - PullRequest
0 голосов
/ 15 ноября 2011

Мне нужно создать объекты для моих кнопок в моем репетиторе.

Я создал класс:

public class KeyLabel extends JLabel {

    public KeyLabel(String name) {
        setText(name); 

}

это мой подкласс

мой суперкласскласс клавиатуры

, и мне нужно создать объекты для каждой кнопки на моей клавиатуре для моего преподавателя, поэтому a - это метка клавиатуры

, но я не знаю, как это сделатьэто?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

В большинстве случаев вы захотите использовать наследование (т.е. подкласс JButton).Например,

public abstract JKeyboardButton extends JButton{
    public JKeyboardButton(final String key){
        super(key);
        // include other stuff, if necessary
    }

    // include other methods common to all JKeyboardButton instances
}

А затем для каждой конкретной кнопки вы захотите создать подкласс JKeyboardButton, например,

public final class JKeyboardAButton extends JKeyboardButton{
    public JKeyboardAButton(){
        super("a");
    }

    // override/implement other methods..
}

И затем, чтобы получить клавишу клавиатурыскажем, a, все, что вам нужно сделать, это создать экземпляр JKeyboardAButton, например,

final JKeyboardButton aButton = new JKeyboardAButton();

И тогда, очевидно, вам придется создать класс для каждого ключа и бросить все этиэкземпляры в Keyboard класс.Но я оставлю вам «более тяжелое» кодирование.

Кроме того, обратите внимание, что модификатор final не требуется, а скорее является моим личным предпочтением (т.е. для предотвращения подклассов и обеспечения того, чтобыпеременная (даже локальная) назначается только один раз).

0 голосов
/ 15 ноября 2011

Я не знаю, почему вы расширяете JLabel, если хотите создавать кнопки.Расширение JLabel создаст JLabel, который будет потрачен впустую, как в вашем коде.Более соответствующий код будет выглядеть как

public class KeyLabel {

    public KeyLabel(String name) {

JButton buttonOK = new JButton("OK"); //creates OK button
}

}

Более того, я думаю, вы должны посмотреть здесь , для получения подробной информации.

...