![](/img/trans.png)
[英]Serialization of JFrame removes JButton's ActionListener - Java
[英]JButton's ActionListener
在下面的代碼中,當未同時選擇_uiChkTestAction和_uiChkTestItem JCheckBox時,單擊bu1按鈕將它們都選中,但是單擊bu2按鈕不會將_uiChkTestItem JCheckBox從未選擇狀態更改為選中狀態。
那么,我的代碼有問題嗎?
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class TestActionItemListener
{
public static void main(String[] _args)
{
EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame _fra = new JFrame("Testing");
_fra.setSize(500, 500);
_fra.setLayout(new FlowLayout());
final JCheckBox _uiChkTestAction = new JCheckBox("ActionListener");
_uiChkTestAction.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent _ev)
{
System.out.println("State by ActionListener: " + _uiChkTestAction.isSelected());
}
});
final JCheckBox _uiChkTestItem = new JCheckBox("ItemListener");
_uiChkTestItem.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
System.out.println("State by ItemListener: " + _uiChkTestAction.isSelected());
}
});
JButton bu1 = new JButton("actionlistener bu");
bu1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
_uiChkTestAction.setSelected(true);
}
});
JButton bu2 = new JButton("itemlistener bu");
bu1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
_uiChkTestItem.setSelected(true);
}
});
_fra.add(_uiChkTestAction);
_fra.add(_uiChkTestItem);
_fra.add(bu1);
_fra.add(bu2);
_uiChkTestAction.setSelected(true);
_uiChkTestItem.setSelected(true);
_fra.setVisible(true);
}}
);
}
};
你倆你的聽眾添加到同一個按鈕bu1
異添加一個bu1
和一個bu2
您要向bu1
兩次添加一個偵聽器。 將第二個添加到bu2
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.