java - 检查 JButton 是否在特定的 JPanel 中

标签 java swing user-interface coding-style

我正在使用 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/

相关文章:

java - 在子类中重新定义泛型类型

java - mac 中的 processWindowEvent

java - 按钮图标问题,Java 8-Queens 谜题

javascript - 使用开始和停止按钮在 javascript 中开始和停止循环

java - 如何在JavaFX中使TextFlow在窗口中央左对齐

java - 如何打印引号中的整数

java - Wacom 集成到 java 中

java - 在 Java 中从 MongoDB 数组中删除对象

java - AffineTransform() 旋转矩形的速度太快

java - 当我使用 GROUP BY 组合值时,如何显示 SQL 表中的更改?