【问题标题】:Making objects for each button为每个按钮制作对象
【发布时间】:2011-11-15 12:49:57
【问题描述】:

我需要为我的打字导师中的按钮制作对象。

我已经上课了:

public class KeyLabel extends JLabel {

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

}

这是我的子类

我的超类是键盘类

我需要为我的打字导师为键盘上的每个按钮制作对象,所以 a 是它的键盘标签

但我不知道该怎么做?

【问题讨论】:

  • 当您可以使用 JButton 类的 setText() 设置按钮上的文本时,为什么要创建标签

标签: java swing jbutton


【解决方案1】:

如果您要创建按钮,我不知道您为什么要扩展 JLabel。扩展 JLabel 将创建一个 JLabel,它将像在您的代码中一样被浪费。更相关的代码就像

public class KeyLabel {

    public KeyLabel(String name) {

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

}

此外,我认为您应该查看here,了解详细信息。

【讨论】:

    【解决方案2】:

    在大多数情况下,您会希望使用继承(即子类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 修饰符不是必需的,而是我的个人偏好(即防止子类化并确保变量(甚至是本地变量)只分配一次)。

    【讨论】:

    • '在大多数情况下,你会想要使用继承' - 实际上不,当你可以通过配置获得相同的效果时,你会从不使用继承......所有JSomething(基类除外)用于使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多