当前位置: 首页 > 知识库问答 >
问题:

为什么我的JButtons(“搜索按钮”)不会出现在JPanel上?

汪建德
2023-03-14

我正在构建一个清单Gui应用程序,我希望用描述的第一个字母来搜索项目。所以,我需要在JPanel上显示26个小按钮(将是字母表中的字母)。然后使用搜索按钮来对应保存的文件。但是我似乎不能让按钮显示???它只是JPanel。我这里只有整个程序的片段。只是突出显示其中的JPanel和JButton。

JPanel searchPanel = new JPanel( );
searchPanel.setPreferredSize(new Dimension(240, 160));
searchPanel.setBorder(BorderFactory.createTitledBorder("Item Search")); 
searchPanel.setBounds(149, 295, 205, 94);
gridConstraints = new GridBagConstraints();
gridConstraints.gridx = 1;
gridConstraints.gridy = 7;
gridConstraints.gridwidth = 3;
gridConstraints.insets = new Insets(10, 0, 10, 0);
gridConstraints.anchor = GridBagConstraints.CENTER;
getContentPane().add(searchPanel, gridConstraints);
layeredPane.setLayer(searchPanel, 2);
layeredPane.add(searchPanel, gridConstraints); 

 
int x = 0, y = 0;
    // Create Button and Position of Search Panel
    for (int i = 0; i < 26; i++)
    {
        JButton[ ] searchBtn = new JButton[26];
        searchBtn[i] = new JButton( );
        searchBtn[i].setText(String.valueOf((char) (65 + i)));
        searchBtn[i].setFont(new Font("Arial", Font.BOLD, 12));
        searchBtn[i].setMargin(new Insets(-10, -10, -10, -10));
        searchBtn[i].setBounds(149, 295, i, i);
        sizeButton(searchBtn[i], new Dimension(37, 27));
        searchBtn[i].setBackground(Color.YELLOW);
        searchBtn[i].setFocusable(false);
        gridConstraints = new GridBagConstraints();
        gridConstraints.gridx = x;
        gridConstraints.gridy = y;
        searchPanel.add(searchBtn[i], gridConstraints);
        //Search Buttons Method
        searchBtn[i].addActionListener(new ActionListener( ) {
            public void actionPerformed(ActionEvent e)
            {
                searchBtnActionPerformed(e);
            }
            });
        x++;
        //6 Buttons Per Row
        if (x % 6 == 0)
        {
            x = 0;
            y++;
        }
        }
         
         getContentPane( ).setLayout(getLayout( ));
 }

共有1个答案

严峰
2023-03-14

所以,我拿了你的代码,纠正了你试图同时添加两个不同容器的事实,它产生了。。。

现在,我很确定这不是你想要的,基于我对你的代码的有限理解(这是代码处于如此状态以至于不值得尝试挽救的时刻之一),但是,你似乎显然不明白如何使用布局管理器。

您应该花时间查看容器内组件的布局

所以,我扔掉了你的代码,只是做了。。。

public class SearchPane extends JPanel {

    public SearchPane() {
        setBorder(BorderFactory.createTitledBorder("Item Search"));
        setLayout(new GridLayout(-1, 6));

        ActionListener listener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String cmd = e.getActionCommand();
                JOptionPane.showMessageDialog(SearchPane.this, "You want to search for [" + cmd + "]", "Search", JOptionPane.PLAIN_MESSAGE);
            }
        };

        for (int index = 0; index < 26; index++) {
            JButton btn = new JButton(Character.toString('A' + index));
            btn.addActionListener(listener);
            add(btn);
        }
    }
}
 类似资料:
  • 我试图将24个添加到我的的,但当我运行它时,我发现没有添加任何按钮。(至少,它们不可见!)。我试着给一个背景色,它是可见的。有人知道我做错了什么吗? 这是我的代码(还有一个类): 其他(主要)类别:

  • 我想将结果发送到。我正在使用AJAX传递我的值。我不确定为什么我数据现在显示在一个按钮中。有谁能帮我解决这个问题吗?如果你们能给我提供如何解决我的问题的代码,那就更好了。提前道谢。 这是我的AJAX代码 编辑问题:我想根据用户当月的输入创建一个excel文件。因此,在用户选择了月份之后,当他们单击按钮时,excel文件将自动下载。我现在的问题是,我现在知道如何将month值传递到页面,在该页面中我

  • 我想在地图上显示许多不同的标签,所以我在面板中使用null布局,并为每个标签调用setLocation。但是,由于某些原因,标签没有显示出来。如果我把锅拿开。setLayout(null),则标签显示在面板的顶部中心。为什么null布局不能与setPosition一起工作?

  • 我现在使用Selenium&Ruby自动截图,但是,我无法从开发人员工具中找到元素名。如何在谷歌上点击“搜索”? 下面的代码有一个错误,它是 没有这样的元素:找不到元素:{“method”:“CSS Selector”,“Selector”:“*[name='btn g']”}(Selenium::WebDriver::Error::NosuChelementError)(会话信息:Chrome=

  • 这也是基于我的最后一个问题。 按照本教程,我将项目克隆到我的机器中,并试图让项目正确构建。 在修复我在上一个问题中得到的错误的过程中,我遇到了一个新的错误。 这是我正在尝试修复/编辑的构建脚本的部分 按照如何检查Gradle版本的说明,我检查了我的版本,发现我正在运行Gradle版本2.2.1。基于此,我改变了 到 然而,在更改构建脚本代码并尝试重建我的项目后,我得到了上面提到的错误(下面是完整的