我正在使用 Java 创建一个 GUI 应用程序。主框架中有不同的部分,每个部分都有特定的功能。标题面板包含提交、撤消、随机播放、帮助和退出按钮。这是示例代码:
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 语句来检查每个按钮是低效且不整洁的。
最佳答案
老实说,我只是为每个按钮执行操作。它可能需要更多代码,但它是更好的解决方案。但如果你坚持走这条路,你可以试试这个
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
}
}
关于java - 检查 JButton 是否在特定的 JPanel 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40554819/