-2
按鈕,我需要一個偵聽器添加到每個按鈕像這樣:獲取幀
for(i = 0; i < 10; i++)
buttons[i].addActionListener(actionListener);
的按鈕已經存在,而且我需要在我的畫面按鈕的列表。
按鈕,我需要一個偵聽器添加到每個按鈕像這樣:獲取幀
for(i = 0; i < 10; i++)
buttons[i].addActionListener(actionListener);
的按鈕已經存在,而且我需要在我的畫面按鈕的列表。
您可以使用getComponents()
方法獲取框架中的所有JButton。
工作示例:
frame = new JFrame();
frame.setVisible(true);
frame.setSize(250, 250);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout();
frame.setLayout(layout);
for (int i = 0; i < 10; ++i)
frame.getContentPane().add(new JButton("A"));
Component[] components = frame.getContentPane().getComponents();
ActionListener actionListener = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Hello");
}
};
for (Component component : components)
{
if (component instanceof JButton)
{
((JButton) component).addActionListener(actionListener);
}
}
它增加了10個按鈕,然後添加監聽器。
提示:不要這樣做,如果您創建按鈕dinamically,它只是矯枉過正!
以上可以更簡單:
frame = new JFrame();
frame.setVisible(true);
frame.setSize(250, 250);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout();
frame.setLayout(layout);
ActionListener actionListener = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Hello");
}
};
for (int i = 0; i < 10; ++i)
{
JButton button = new JButton("A");
button.addActionListener(actionListener);
frame.getContentPane().add(button);
}
相同的代碼,無需兩臺維權!
但是,如果你不知道多少按鈕,你將有第一個代碼就可以,如果你知道並且你只是想在事情發生之前避免一個動作,可以考慮使用一個布爾變量。
喜歡的東西:
// out
boolean specialEvent;
// inside
ActionListener actionListener = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (!specialEvent) return; // the special event is still false so no you can't do anything
System.out.println("Hello");
}
};
只需創建一個'按鈕[]'和'每次當Button'你動態創建它們添加到它(或查找使用'R'類) – hexafraction
按鈕已經存在,我需要在我的框架中獲得按鈕列表 – user2976686