gpt4 book ai didi

java - 如何制作如附图所示的布局

转载 作者:行者123 更新时间:2023-12-01 22:25:50 25 4
gpt4 key购买 nike

我正在尝试设计一个包含一个表单和几个项目的布局。但我发现很难将元素放在正确的位置。在下图中,右框是我想要设计的,左框是我可以制作的。 enter image description here这是右框架的代码:

public class GUI extends JFrame{


public GUI(){
JFrame frame = new JFrame("frame");
frame.setSize(600, 600);

JPanel panel = new JPanel(new BorderLayout());

panel.add(new JLabel("Title"), BorderLayout.NORTH);

JPanel formPanel = new JPanel(new GridLayout(1,2));
panel.add(formPanel);
TitledBorder formPanelTitle = BorderFactory.createTitledBorder("GridLayout(1,2)");
formPanel.setBorder(formPanelTitle);

//LEFT PANEL
JPanel labelsPanel = new JPanel(new GridLayout(4,1));
TitledBorder labelsPanelTitle = BorderFactory.createTitledBorder("GridLayout(4,1)");
labelsPanel.setBorder(labelsPanelTitle);

labelsPanel.add(new JLabel("Label 1"));
labelsPanel.add(new JLabel("Label 2"));
labelsPanel.add(new JLabel("Label 3"));
labelsPanel.add(new JLabel("Label 4"));

formPanel.add(labelsPanel);

//RIGHT PANEL
JPanel fieldsPanel = new JPanel(new GridLayout(4,1));
TitledBorder fieldsPanelTitle = BorderFactory.createTitledBorder("GridLayout(4,1)");
fieldsPanel.setBorder(fieldsPanelTitle);

fieldsPanel.add(new JTextField("Label 1"));
fieldsPanel.add(new JTextField("Label 2"));
fieldsPanel.add(new JTextField("Label 3"));
fieldsPanel.add(new JTextField("Label 4"));

formPanel.add(fieldsPanel);

//BOTTOM PANEL
JPanel bottomPanel = new JPanel(new GridLayout(2,1));
TitledBorder BottomPanelTitle = BorderFactory.createTitledBorder("GridLayout(2,1)");
bottomPanel.setBorder(BottomPanelTitle);
panel.add(bottomPanel, BorderLayout.SOUTH);

JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(new JButton("Browse"));
buttonPanel.add(new JLabel("Label"));
TitledBorder buttonPanelTitle = BorderFactory.createTitledBorder("FlowLayout()");
buttonPanel.setBorder(buttonPanelTitle);
bottomPanel.add(buttonPanel);

JPanel secondButtonPanel = new JPanel(new GridLayout(1,2));
secondButtonPanel.add(new JButton("Back"));
secondButtonPanel.add(new JButton("Next"));
TitledBorder secondButtonPanelTitle = BorderFactory.createTitledBorder("GridLayout(1,2)");
secondButtonPanel.setBorder(secondButtonPanelTitle);
bottomPanel.add(secondButtonPanel);

frame.add(panel);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
// TODO code application logic here
new GUI();

}

}

我不确定代码是否真的是最佳的,因为有很多内部面板并且使其过于复杂。而且我无法将元素放在我想要的地方。有什么建议或想法可以让这个布局看起来更好吗?

最佳答案

  • 使用 GridBagLayout 创建一个 JPanel 并向其中添加标签/字段,这形成了布局的“中心”部分。
  • 创建一个 JPanel 并向其中添加 Browse 按钮和 JLabel。使用将 GridBagConstraints#gridwidth 设置为 REMAINDER,将其添加到您的第一个面板
  • 使用BorderLayout创建一个JPanel,将第一个面板添加到CENTER位置。将标题Label添加到NORTH位置,您可能需要调整它的horizo​​ntalAlignment属性
  • 使用FlowLayout创建一个JPanel,与RIGHT对齐,并向其中添加“后退”和“下一步”按钮。将其添加到上一个面板的 SOUTH 位置。

查看Laying Out Components Within a Container了解更多详情

关于java - 如何制作如附图所示的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28799446/

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