我尝试使用两个不同的按钮创建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)。
答案 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 ,并且根据鼠标的行为(按下,单击,释放等)有很多方法。