我正在使用Java创建GUI应用程序。主框架中有不同的部分,每个部分都有特定的功能。标题面板包含按钮Submit,Undo,Shuffle,Help和Quit。以下是示例代码:
JPanel header = new JPanel();
JButton submit = new JButton("Submit");
header.add(submit);
JButton undo= new JButton("Undo");
header.add(undo);
JButton shuffle= new JButton("Shuffle");
header.add(shuffle);
JButton help= new JButton("Help");
header.add(help);
JButton quit = new JButton("Quit");
header.add(quit);
在我的代码中,我需要检查单击的按钮是否不在标题面板中(其他面板中也有按钮)。
public void actionPerformed(ActionEvent e)
{
String clicked = e.getActionCommand();
if(!clicked.equals("Submit") && !clicked.equals("Undo") && !clicked.equals("Help")&& !clicked.equals("Quit") && !clicked.equals("Shuffle")){
//some code here
是否有其他更简洁的方法来检查点击的按钮是否不在标题面板中?我需要在另一个包含更多按钮的面板中做类似的事情。我相信使用IF语句检查每个按钮是低效和不整洁的。
答案 0 :(得分:1)
老实说,我只是为每个按钮实施操作。它可能需要更多代码,但它是一个更好的解决方案。但如果你坚持这样做,你可以试试这个
public void actionPerformed(ActionEvent e) {
if (!Arrays.asList(PANEL.getComponents()).stream().filter(b -> b instanceof JButton)
.map(b -> (JButton) b).filter(b ->
b.getText().equals(e.getActionCommand())).findFirst().isPresent()) {
// execute code if button is not a child of PANEL
}
}
答案 1 :(得分:0)
您可以分别对每个按钮使用addActionListener
。