gpt4 book ai didi

java - 如何布置具有多个文本字段和确定、取消按钮的输入面板?

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

我正在尝试用 Java 实现以下效果:

input panel

但是,我不确定使用什么布局以及如何使用。 FlowLayout 显然不行。 GridLayout 也不起作用,因为前 4 行应该是 1 列行,但第 5 行需要有 2 列。

到目前为止,这是我的代码:

public class DepositPanel extends JPanel
{
private JLabel cashL, checksL;
private JTextField cashTF, checksTF;
private JButton ok, cancel;

DepositPanel()
{
JPanel depositP = new JPanel();
depositP.setLayout(new FlowLayout(FlowLayout.LEFT, 2, 2));
depositP.setPreferredSize(new Dimension(250, 85));

JTextField cashTF = new JTextField(22);
JTextField checksTF = new JTextField(22);

JLabel cashL = new JLabel("Cash:");
JLabel checksL = new JLabel("Checks:");

ok = new JButton("OK");
cancel = new JButton("CANCEL");

depositP.add(cashL);
depositP.add(cashTF);
depositP.add(checksL);
depositP.add(checksTF);
depositP.add(ok);
depositP.add(cancel):
}
}

最佳答案

您可以尝试组合布局,2 个 JPanels,1 个用于按钮,1 个用于字段,按钮面板与 FlowLayout和字段面板 BoxLayout .并将它们添加到框架中。 (我做了一个 JFrame 用于测试,但您可以将它更改为 JPanel 并将该面板添加到您的 JFrame 中)。请确保只有 1 个 JFrame,请参阅 The use of multiple JFrames, Good / Bad Practice .

enter image description here

例如:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class DepositExample {
JFrame frame;
JPanel buttonPane, fieldsPanel;
JLabel cash, checks;
JTextField cashField, checksField;
JButton ok, cancel;

DepositExample() {
frame = new JFrame("Deposit");
buttonPane = new JPanel();
fieldsPanel = new JPanel();
cash = new JLabel("Cash");
checks = new JLabel("Checks");
cashField = new JTextField("");
checksField = new JTextField("");
ok = new JButton("OK");
cancel = new JButton("Cancel");

fieldsPanel.setLayout(new BoxLayout(fieldsPanel, BoxLayout.PAGE_AXIS));
buttonPane.setLayout(new FlowLayout());

fieldsPanel.add(cash);
fieldsPanel.add(cashField);
fieldsPanel.add(checks);
fieldsPanel.add(checksField);
buttonPane.add(ok);
buttonPane.add(cancel);
frame.add(fieldsPanel, BorderLayout.PAGE_START);
frame.add(buttonPane, BorderLayout.PAGE_END);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
new DepositExample();
}
}

要在组件之间增加一些间距,您可以添加 EmptyBorders正如@LuxxMiner 在他的 comment 中所推荐的那样下面。

关于java - 如何布置具有多个文本字段和确定、取消按钮的输入面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34186291/

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