按钮正在执行通过动作侦听器分配给其他按钮的动作

时间:2018-12-10 13:27:14

标签: jbutton actionlistener

我的代码只有一个小问题;我目前正在使用卡片布局,其中目前有3个按钮。 1(在初始面板上)将JLabel添加到初始面板,另一个(也在初始面板上)切换到第二个面板,该面板仅包含返回到初始面板的第三个按钮。我的问题是,单击面板之间交换的按钮也会触发创建JLabel的第一个按钮。

这是我的代码的一部分:

every()

然后是动作侦听器部分:

next()

1 个答案:

答案 0 :(得分:0)

您尚未对{语句使用花括号(if)。如果if语句没有大括号,则if块中仅包含if之后的行。

例如您的代码

if(event.getSource()==adddeck)
decklist.add(new Deck(newdeck.getText()));              
//panel for label/buttons
JPanel deckpanel;
deckpanel= new JPanel();
deckpanel.setLayout(new GridLayout(1,2));
//label with new deck name
JLabel decklabel;
decklabel = new JLabel(newdeck.getText());                       
deckpanel.add(decklabel);
deckpanel.revalidate();

等效于:

if(event.getSource()==adddeck) {
  decklist.add(new Deck(newdeck.getText()));
}              
//panel for label/buttons
JPanel deckpanel;
deckpanel= new JPanel();
deckpanel.setLayout(new GridLayout(1,2));
//label with new deck name
JLabel decklabel;
decklabel = new JLabel(newdeck.getText());                       
deckpanel.add(decklabel);
deckpanel.revalidate();

因此,无论您单击什么按钮,始终从行//panel for label/buttons开始执行代码。