2011-02-13 39 views
2

我有一个文本字段来表示一个名称,以及一个用于注册类型的组合框。然后,在旁边有一个复选框,但它应该在另外两个字段的下面。这里是我编码:如何将我的复选框放在我的文本字段中Swing中?

public RegPanel() 
    { 
     //create a new panel 
     new GridLayout(2,1); 
     //create one of two subpanels 
     subPanel = new JPanel(new FlowLayout()); 
     //create a textfield 
     regTextField = new JTextField(20); 
     //create a combobox and don't let anyone add to it 
     regComboBox = new JComboBox(regOptions); 
     //create a border for the subpanel  
     subPanel.setBorder(BorderFactory.createTitledBorder("Registrant's Name & Type")); 
     //add regTypePanel and regBox to the panel  
     subPanel.add(regTextField); 
     subPanel.add(regComboBox); 
     //create a second subpanel with a flowlayout 
     subPanel2 = new JPanel(new FlowLayout()); 
     //create a checkbox 
     regCheckBox = new JCheckBox("Dinner and Keynote Speech"); 
     subPanel2.add(regCheckBox); 
     //add the subpanels to the main panel 
     add(subPanel); 
     add(subPanel2); 
    } 

任何想法我失踪?抱歉蹩脚的布局,我无法弄清楚如何修复视图。

于是我意识到我没有设置网格布局权利,所以我改变了对“setLayout的(新的GridLayout(2,1)); 但现在我的图形用户界面,它完全搞砸了所有其他的位置除非你在setLayout(...)使用它的元素。

回答

2

反正new GridLayout(...)什么也不做。

您可以尝试使用Box.createVerticalBox()(sample),而不是网格布局有你的组件垂直对齐。

0

你也可能想要使用BorderLayout,并意识到你是最好的在另一种布局中进行布局以实现不同的效果。

1

在你的情况,你正在使用

  • RegPanel(其布局?)
    • 子面板(FlowLayout中)
      • regTextField
      • regComboBox
    • subPanel2(FlowLayout中)
      • regCheckBox

贵主要RegPanel有哪些布局?它具有默认JPanel布局(如果RegPanel是JPanel的子类),它是一个FlowLayout。所以,你的RegPanel会显示两个子面板,看起来就像你只有一个面板和所有组件一样。所以,你的RegPanel也需要一个LayoutManager - GridLayout(2,1)似乎没问题(如果你不想对齐两行中的组件)。


my current project,我永远只能使用GroupLayout(除了偶尔一个BorderLayout的)。它需要一点时间才能习惯(和一个包装类,使代码更容易编写和读取),但对于这样的表单,这似乎是理想的(仅限于内置布局管理器)。

0

不得不提MigLayout在这里作为一个伟大的通用布局管理器 - 它是非常灵活,易于使用,一旦你了解它。

相关问题