gpt4 book ai didi

java - 创建联系人列表程序

转载 作者:搜寻专家 更新时间:2023-10-31 20:14:16 24 4
gpt4 key购买 nike

我正在使用 Java Swing 在 Eclipse 中编写联系人列表应用程序。如何获得仅包含列和行的简单表格布局?我不想要行或列标签。

像这样:

first name: john
middle name: franklin
last name: doe

名称将是可编辑的文本框等。

最好使用什么组件?

我还将在文本字段下方设置按钮。目前我有一个正确运行的 JFrame。它会弹出一个窗口,显示我的菜单选项是正确的。但是当我尝试这样做时:

myFrame.setLayout(new GridLayout(6, 2)); 

我得到一个错误。我想要一个两列和 5 行(也许 6 行)的网格布局。我想在左栏上有一个标签,在右栏上有一个文本框。然后是底部的两个按钮,居中。

最佳答案

您最好将字段和控件(按钮)分成单独的面板,这样您可以为每个面板提供不同的布局管理器。

我将从使用 BorderLayout 的基本 JPanel 开始。

在此基础上,我将在 CENTER 位置添加“字段”面板,在 SOUTH 位置添加控件(按钮)。

对于字段,我会使用 GridBagLayout,但我很挑剔,对于控制面板,我可能会使用 FlowLayout(除非你可以访问一个不错的 ButtonLayout 管理器 ;))

这意味着你最终可能会得到类似的东西

enter image description here

更新了代码示例

public class FormPanel extends JPanel {

private JTextField fldFirstName;
private JTextField fldMiddleName;
private JTextField fldLastName;
private JTextField fldDateOfBirth;
private JTextField fldEMail;
private JButton okButton;
private JButton cancelButton;

public FormPanel() {

setLayout(new BorderLayout());
add(createFieldsPane());
add(createButtonsPane(), BorderLayout.SOUTH);

}

public JPanel createButtonsPane() {

JPanel panel = new JPanel(new FlowLayout());
panel.add((okButton = createButton("Ok")));
panel.add((cancelButton = createButton("Cancel")));

return panel;

}

protected JButton createButton(String text) {

return new JButton(text);

}

public JPanel createFieldsPane() {

JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(2, 2, 2, 2);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.WEST;

panel.add(createLabel("First Name:"), gbc);
gbc.gridy++;
panel.add(createLabel("Middle Name:"), gbc);
gbc.gridy++;
panel.add(createLabel("Last Name:"), gbc);
gbc.gridy++;
panel.add(createLabel("Date of Birth:"), gbc);
gbc.gridy++;
panel.add(createLabel("EMail:"), gbc);

gbc.gridy = 0;
gbc.gridx++;
gbc.weightx = 1;
panel.add((fldFirstName = createField()), gbc);
gbc.gridy++;
panel.add((fldLastName = createField()), gbc);
gbc.gridy++;
panel.add((fldMiddleName = createField()), gbc);
gbc.gridy++;
panel.add((fldDateOfBirth = createField()), gbc);
gbc.gridy++;
panel.add((fldEMail = createField()), gbc);

JPanel filler = new JPanel();
filler.setOpaque(false);

gbc.gridy++;
gbc.weightx = 1;
gbc.weighty = 1;
panel.add(filler, gbc);

return panel;

}

protected JLabel createLabel(String text) {

return new JLabel(text);

}

protected JTextField createField() {

JTextField field = new JTextField(12);
return field;

}

}

关于java - 创建联系人列表程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12255250/

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