gpt4 book ai didi

java - 我自己的组件中的一个面板中有两个不同的按钮

转载 作者:行者123 更新时间:2023-12-02 11:50:24 25 4
gpt4 key购买 nike

我正在尝试使用两个不同的按钮创建 JPanel,其中一个按钮增加文本或窗口的大小,第二个按钮减少文本或窗口的大小。我有带有按钮声明的类(class)。当我将这些按钮分别放在 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);
}


}

有 JPanel 用于绑定(bind) 2 个按钮。这是最大的问题:/我缺乏想法。

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 很常见。下面的代码仅显示单击单独按钮时(不在 JPanel 中)的 inc 和 dec 大小的函数。

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

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

最佳答案

我不确定我是否正确理解了这个问题,但我认为在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,并且有很多方法,具体取决于鼠标的行为(按下、单击、释放等)。

关于java - 我自己的组件中的一个面板中有两个不同的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47916668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com