use*_*252 3 java swing jcombobox
将JComboBox
组件放入一个内部时,我遇到了一种奇怪的行为GroupLayout
.我已经减少了代码到下面小例子,正好特色的一个JComboBox
奠定了通过GroupLayout
.
观察到的行为如下:
我已经发现了什么:
这是示例代码 - 欢迎提出意见:
import java.awt.BorderLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JRootPane;
public class DummyUI_cbdiagnosis extends javax.swing.JPanel {
private javax.swing.JComboBox cbCategory;
public DummyUI_cbdiagnosis() {
initComponents();
}
private void initComponents() {
cbCategory = new JComboBox();
cbCategory.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"a", "b", "c" }));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addComponent(cbCategory,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addComponent(cbCategory)
));
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JRootPane rootPane = frame.getRootPane();
rootPane.setLayout(new BorderLayout());
DummyUI_cbdiagnosis panel = new DummyUI_cbdiagnosis();
rootPane.add(panel, BorderLayout.NORTH);
frame.pack();
frame.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
永远不要将组件添加到RootPane
自身,而是将它们添加到自身contentPane
.
frame.add(panel);
Run Code Online (Sandbox Code Playgroud)
要么
frame.setContentPane(panel);
Run Code Online (Sandbox Code Playgroud)
A RootPane
可以控制放在哪里:
JComboBox
),对话框,拖放等.RootPane
使用一个特殊的布局管理器调用RootLayout
,不应该更改为BorderLayout
.
归档时间: |
|
查看次数: |
464 次 |
最近记录: |