java创建JOptionPane及其具有固定宽度和高度的对象
我正在尝试创建一个类似这样的JOptionPane
。我尝试了许多布局管理器,但是(GridBagLayout
,GridLayout
,AbsoluteLayout
)我还没有成功
例如,如果我使用GridBagLayout
,ipadx
确实很有用,但是JTextFields
宽度取决于它们的文本长度
如果使用GridLayout
,则每个对象的宽度都属于列宽
如果我使用AbsoluteLayout
,则JOptionPane
不会将自身扩展到带有对象的配置的JPanel
边界
我需要固定的对象宽度、高度和JOptionPane
当我们使用带有项目的JPanel
创建它时,它应该扩展自身
哪个布局管理器最适合此任务?如果你建议的话,我会集中精力的
--编辑--
网格布局示例
JPanel panel = new JPanel( new GridLayout(8, 2) );
JLabel inforForNameLabel = new JLabel();
inforForNameLabel.setText("Long Label Name....................................");
final JTextField userNameTextField = new JTextField();
userNameTextField.setText("aaaaaaaaaaaaa");
userNameTextField.setEditable(false);
JLabel inforForNameSurname = new JLabel();
inforForNameSurname.setText("Long Label Name..................................");
final JTextField NameSurnameTextField = new JTextField();
NameSurnameTextField.setText("aaaaaaaaaaaa aaaaaaaaaa");
JLabel inforForStatsCombobox = new JLabel();
inforForStatsCombobox.setText("Long Label Name.................................");
JComboBox statComboBox = new JComboBox();
DefaultComboBoxModel dt = new DefaultComboBoxModel();
statComboBox.setModel(dt);
dt.addElement("USER.....");
dt.addElement("ADMIN");
statComboBox.setSelectedItem("USER.....");
JLabel inforForAuthCombobox = new JLabel();
inforForAuthCombobox.setText("Long Label Name.................................");
String[] authComboBoxObjects = { "READ", "READ/WRITE"};
final JComboBox authComboBox = new JComboBox(authComboBoxObjects);
authComboBox.setSelectedItem("READ/WRITE");
panel.add(inforForNameLabel);
panel.add(userNameTextField);
panel.add(inforForNameSurname);
panel.add(NameSurnameTextField);
panel.add(inforForStatsCombobox);
panel.add(statComboBox);
panel.add(inforForAuthCombobox);
panel.add(authComboBox);
String[] buttons = { "EXIT", "OK" };
int rc = JOptionPane.showOptionDialog(null, panel,"User Config", JOptionPane.INFORMATION_MESSAGE,JOptionPane.QUESTION_MESSAGE, null, buttons, buttons[1]);
if(rc == 0 || rc == -1){
System.out.println(userNameTextField.getText());
}
else{
System.out.println("Cancel...");
}
# 1 楼答案
感谢您对@ControlAltDel和@Gorbles的评论
下面的代码构建选项窗格,在问题处选择所需的格式
# 2 楼答案
同意JDialog可以让你完全控制
UIManager似乎控制着最小尺寸。在显示选项窗格之前,您可以使用以下命令覆盖:
您可以在UIManager Defaults中查看由UIManager控制的其他属性的列表。请注意,并非所有LAF都能管理相同的物业