gpt4 book ai didi

java - 面板中组件的对齐

转载 作者:行者123 更新时间:2023-12-02 09:51:32 25 4
gpt4 key购买 nike

我需要在 JPanel 中垂直对齐组件(2 个 JTextField 和 1 JTextArea),然后将此面板放置在已经定义的框架。

我想要这样的。

我尝试通过为面板设置不同的布局来做到这一点,但我无法让它工作。在下面的代码中,面板上没有任何内容就可以了。如果我向面板添加组件,它的行为会有所不同。组件在面板中水平显示。

public class DialogboxExample {
public static void main(String[] args) {
JFrame frame = new JFrame("BoxLayout Example X_AXIS");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();

JLabel lblPhone = new JLabel("Name");
lblPhone.setBounds(65, 68, 46, 14);
frame.getContentPane().add(lblPhone);

JTextField textField_1 = new JTextField();
textField_1.setBounds(136, 65, 247, 22);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);

JLabel lblEmailId = new JLabel("Category");
lblEmailId.setBounds(65, 115, 70, 14);
frame.getContentPane().add(lblEmailId);

JTextField textField_2 = new JTextField();
textField_2.setBounds(136, 112, 247, 22);
frame.getContentPane().add(textField_2);
textField_2.setColumns(10);

JLabel lblAddress = new JLabel("Description");
lblAddress.setBounds(65, 162, 150, 14);
frame.getContentPane().add(lblAddress);

JTextArea textArea_1 = new JTextArea();
textArea_1.setBounds(136, 157, 300, 100);
frame.getContentPane().add(textArea_1);

frame.setSize(300, 300);
frame.getContentPane().add( panel, "Center");
frame.pack();
frame.setVisible(true);
}
}

我希望 JTextFieldJTextArea 垂直堆叠。

有人可以帮我解决这个问题吗?

如果我将 GridLayout 添加到面板,它可以正常工作,但所有 3 个组件的组件大小相同。

最佳答案

  1. “我尝试通过为面板设置不同的布局来做到这一点” GUI 很少只使用一种布局。在这个中,我可能会使用 GridBagLayout (不是 GridLayout)作为标签和文本字段/区域),然后将其另一个 GridBagLayout 中的面板,使其在 JFrame 中居中。 (如果我正确理解了要求,但我不确定我是否理解了。)
  2. 如果使用 JLabel 作为 Description 而不是 TitledBorder,事情会变得更加复杂。
  3. 使用任何值得使用的布局都会忽略
  4. setBounds(..)。指定列以建议文本字段的宽度以及文本区域的列和行。
  5. 考虑到使用 JFrame 显示 GUI,
  6. DialogboxExample 不是很准确。它可能应该使用 JDialog,但坚持使用框架可能会导致类似这样的结果:

enter image description here

关于java - 面板中组件的对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56292124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com