【问题标题】:Java Swing: Add a component by code in NetBeansJava Swing:在 NetBeans 中通过代码添加组件
【发布时间】:2014-01-23 02:48:21
【问题描述】:

我使用的是 NetBeans,我有一个 JFrame,我使用 NetBeans 的调色板向它添加了一个 JPanel

我想手动添加一个JRadioButton 到那个JPanel,所以这是我在构造函数中尝试的代码:

ButtonGroup group = new ButtonGroup();
JRadioButton btn1 = new JRadioButton("btn1 ");
JPanel1.add(btn1);

但是当我运行JFrame 时,我在任何地方都看不到JRadioButton,但是当我使用NetBens's 调色板添加它时它可以工作。

我该如何解决这个问题?

【问题讨论】:

    标签: java swing netbeans jpanel jradiobutton


    【解决方案1】:
    1. 确保 JPanel 未使用 GroupLayout。大多数其他布局都可以很好地工作,但目前可能,JPanel 的默认 FlowLayout 效果最好。
    2. 确保在添加组件后在 JPanel 上调用 revalidate()repaint()如果您是在 GUI 呈现后添加组件,例如在按钮按下时。
    3. 如果仍有问题,请出示您的代码。
    4. 一般建议:在您了解 GUI 库(此处为 Swing)的基础之前,避免使用代码生成实用程序。你不会后悔这样做的。

    【讨论】:

    • 我认为它正在使用 GroupLayout,但我在哪里可以在 netbeans 中更改它?
    • @SuSha:您可以检查 JPanel 的属性,它会准确告诉您它正在使用的布局并允许您更改它。但是,再次查看 Swing 教程,将 NetBeans 的代码生成放在一边,首先学习手动编写代码。
    • 好的,谢谢帮助,我找到了可以更改布局的地方,但我不知道应该使用哪种布局。
    【解决方案2】:

    NetBeans GUI Builder 的问题在于它会为您初始化所有内容,除非您在其他平台上打开文件,否则您无法更改代码。在这种情况下,您有完全弄乱代码的风险。

    我可以建议尝试这样的事情

    • 使用您在property 窗格中设置的首选大小创建一个空的JPanel。您可能还想设置布局,具体取决于您的要求。
    • initComponent() 之后添加JRadioButtons

       public MyGUI(){
           initComponents();
           ButtonGroup group = new ButtonGroup();
           JRadioButton btn1 = new JRadioButton("btn1 ");
           jPanel1.add(btn1);
           jpanel1.revalidate();    // as @Hovercraft Full Of Eels suggested
           jPanel1.repaint();
       }
      

    【讨论】:

    • 谢谢,这很有帮助:) +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    相关资源
    最近更新 更多