我自己的组件

时间:2017-12-21 01:30:27

标签: java netbeans components

我尝试使用两个不同的按钮创建JPanel,其中一个按钮增加,第二个减小文本或窗口的大小。我有按钮声明课。当我将这些按钮分别放在JFrame上时,一切正常。 我不知道如何在每个按钮的JPanel中获取Action Listener。所有我可能做的就是在JPanel上点击鼠标... 你可以帮帮我吗?我真的很喜欢编码所以请礼貌:]

public class ButtonMy extends Component {
private ButtonIncrease increase;
private PropertyChangeSupport propertyChangeSupport;

public ButtonMy() {
    setPreferredSize(new Dimension(30,30));
    kolor = Color.blue;
    setForeground(kolor);


    propertyChangeSupport = new PropertyChangeSupport(this);
    increase = ButtonIncrease.Powieksz;

}   

public ButtonIncrease getIncrease() {
    return increase;
}

public void setIncrease(ButtonIncrease increase) {
    ButtonIncrease oldIncrease = this.increase;
    this.increase = increase;
    propertyChangeSupport.firePropertyChange("increase", oldIncrease, increase);
}

public void addPropertyChangeListener(PropertyChangeListener l) {
    propertyChangeSupport.addPropertyChangeListener(l);
}

public void removePropertyChangeListener(PropertyChangeListener l) {
    propertyChangeSupport.removePropertyChangeListener(l);
}


}

绑定2按钮有JPanel。这是最大的问题:/我缺乏想法。

public class ButtonB extends JPanel implements ActionListener{

public ButtonMy b1 = new ButtonMy();
public ButtonMy b2 = new ButtonMy();

public ButtonB (){

    init();
}
public final void init(){
    setLayout(new GridLayout(1,2));
    this.przycisk1.setIncrease(ButtonIncrease.Powieksz);
    this.przycisk2.setIncrease(ButtonIncrease.Zmniejsz);
    add(b1);
    add(b2);


}      

}

我测试这个组件的JFrame很常见。下面的代码仅显示单击单独按钮时的inc和dec大小的功能(不在JPanel中)。

private void buttonMy3MouseClicked(java.awt.event.MouseEvent evt) {                                       
    switch(buttonMy3.getIncrease()) {
        case Powieksz: setSize(1);
            break;
        case Zmniejsz: setSize(0);
            break;
    }
}                                      

我没有粘贴我的代码。还有一些数学函数,我认为这里不需要它们(比如setSize)。

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解问题,但是我认为在actionListener类下,您应该有一个名为actionPerformed&的方法,它将说如果单击button1则增加数字,如果单击button2则减少数字:

public void actionPerformed( ActionEvent event ) {
if (event.getSource()== b1) // your "increase size" code

if(event.getSource()== b2)// your "decrease size" code 
}

按钮侦听器实际上与鼠标侦听器不同;按钮实现了 ActionListeners 并具有带有 event 变量的 actionPerformed 方法。您可以通过以下方式处理事件 getSource()-此方法从java.util.EventObject继承并返回最初发生事件的对象(按钮本身) 或通过 getActionCommand()-此方法可用于操作事件,或从ActionEvent继承并返回与此操作相关联的命令STRING的任何事件。 但是,鼠标侦听器实现 MouseListener ,并且根据鼠标的行为(按下,单击,释放等)有很多方法。