gpt4 book ai didi

java - 我需要如何实现 GridBagLayout

转载 作者:行者123 更新时间:2023-12-01 21:39:55 24 4
gpt4 key购买 nike

如何将 gridbag 布局添加到我的代码中,以便输出框跨越以下代码中提供的边框参数内的 gui 长度?我还有另外两门类(class)与这项工作配合得很好。当 GUI 填充时,除了输出文本框不跨越 gui 的长度之外,一切都有效,因此文本框中的文本被截断,我想解决这个问题,但我不知道该怎么做,因为我从来没有这样做过使用gridbaglayout。

下图显示了 GUI 的外观:

ATM GUI

有问题的代码如下:

    public ATMGui() {
checkingAcc = new Account(1000);
savingAcc = new Account(2000);
currentSelect = new Account(0);
atmFrame = new JFrame("Automated Teller Machine");
output = new JTextField();
panel = new JPanel();

我认为问题可能是因为我没有完全声明输出框的大小,所以它只跨越一个网格,可以这么说,而我希望它跨越两个网格。有人可以帮助我决定是在上面的代码中以不同的方式声明网格还是在下面的代码中声明网格?另外,我已经阅读了有关 GridBagLayout 和其他方法的信息,但我的问题是我不确定如何/在哪里实现它。

        atmWithdraw = new JButton("Withdraw");
atmDeposit = new JButton("Deposit");
transfer = new JButton("Transfer to");
balance = new JButton("Balance");
atmWithdraw.addActionListener(this);

panel.setLayout(new GridLayout(4, 2));
panel.setBorder(BorderFactory.createEmptyBorder(15, 15, 0, 15));
panel.add(atmWithdraw, 0);
panel.add(atmDeposit, 1);
panel.add(transfer, 2);
panel.add(balance, 3);
panel.add(checking, 4);
panel.add(savings, 5);
panel.add(output, BorderLayout.LINE_END);
atmFrame.add(panel);

atmFrame.setSize(300, 175);
atmFrame.setVisible(true);

最佳答案

i have never used gridbaglayout

首先阅读关于 How to Use GridBagLayout 的 Swing 教程中的部分用于工作示例。

工作示例展示了如何让按钮跨越框架的整个宽度。您需要使用“网格宽度”约束。本教程解释了如何使用所有约束。

另一个选项是嵌套布局管理器。所以也许您使用框架的标准 BorderLayout 。然后,您创建一个面板并使用 GridBagLayout 将一些组件添加到该面板,然后将该面板添加到 CENTER。然后,您可以将“输出框”添加到 BorderLayout.PAGE_END 中。默认情况下,该组件将填充水平空间。

重点是阅读教程并了解每个布局管理器的基础知识。然后使用布局管理器的适当组合来完成工作。

关于java - 我需要如何实现 GridBagLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36607655/

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