Java Swing:在NetBeans中通过代码添加组件

6
我正在使用NetBeans,我有一个JFrame,在其中使用NetBeans的调色板添加了一个JPanel。
我想手动向该JPanel添加一个JRadioButton,所以这是我在构造函数中尝试的代码:
ButtonGroup group = new ButtonGroup();
JRadioButton btn1 = new JRadioButton("btn1 ");
JPanel1.add(btn1);

但是当我运行那个JFrame时,我看不到那个JRadioButton,但是当我使用NetBeans的调色板添加它时,它可以工作。

我该如何解决这个问题?

2个回答

8
  1. 确保JPanel没有使用GroupLayout布局。大多数其他布局都可以很好地工作,但是目前来看,JPanel的默认FlowLayout最好。
  2. 如果您在GUI已呈现后添加组件(例如在按钮推送时),请务必在JPanel上调用revalidate()repaint()
  3. 如果仍然存在问题,请展示您的代码。
  4. 一般建议:在了解GUI库(如Swing)的基础知识之前,避免使用代码生成工具。这样做您不会后悔。

我认为它正在使用GroupLayout,但在NetBeans中我在哪里可以更改它? - Renaud is Not Bill Gates
@SuSha:你可以检查JPanel的属性,它会告诉你它正在使用什么布局,并允许你更改它。但是,再次强调,先学会手写代码,不要依赖NetBeans的代码生成器,可以先看看Swing教程。 - Hovercraft Full Of Eels
好的,感谢您的帮助,我找到了可以更改布局的地方,但我不知道应该使用哪种布局。 - Renaud is Not Bill Gates

3
NetBeans GUI Builder的问题在于它为您初始化了所有内容,除非您在其他平台上打开文件,否则您无法更改代码。在这种情况下,您有完全搞砸代码的风险。
我可以建议尝试以下方法:
  • Create an empty JPanel with a preferred size that you set in the property pane. You may also want to set the layout also, depending on your requirements.
  • After the initComponent() then add the 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 - Renaud is Not Bill Gates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接