【问题标题】:Stop Java's JTextField from expanding to fit panel?阻止 Java 的 JTextField 扩展到适合面板?
【发布时间】:2012-03-11 01:59:46
【问题描述】:

我正在制作一个 RPG 来练习我的新手编程能力。我想在 1x4 网格中创建一堆用于角色创建的选项,下方有一个确认按钮。

我的问题是,我希望 JTextField 不再看起来像是被设计为使用世界上可能拥有的任何和所有文本。见这里:

[好的,我还不能发布图片。]

但它是一个巨大的文本字段,我相信这是它试图填满整个面板的方式。我只是希望它与旁边的 JLabel 高度大致相同。

我已经尝试过 setBounds()、setSize()、setPreferredSize()...如何使该文本字段的大小合适?

编辑:抱歉没有发布相关代码:

package practice;

import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        JFrame failFrame = new JFrame();
        JPanel failPanel = new JPanel();
        failPanel.setLayout(new GridLayout(0, 4));

        failPanel.add(new JTextField());
        failPanel.add(new JPanel());
        failPanel.add(new JTextField());
        failPanel.add(new JPanel());

        failFrame.add(failPanel);
        failFrame.setSize(800, 800);
        failFrame.setLocationRelativeTo(null);
        failFrame.setVisible(true);
    }

}

这会导致文本字段比我希望的要高得多。是否可以使用 gridLayout 并降低它们的高度?

【问题讨论】:

  • 发布...您的...代码。 Swing 使用布局管理器来布局组件。 texfield 的行为方式取决于使用的布局管理器及其使用方式。您尝试过的 setXxxx 方法几乎不应该被使用。
  • 抱歉,代码已启动。
  • 请编辑您的问题以包含一个sscce,以显示您尝试过的内容。

标签: java swing user-interface layout jtextfield


【解决方案1】:

也许 LayoutManager 可以提供帮助。如果文本字段和标签应该具有相同的大小,您可以考虑使用网格布局。

见: http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

【讨论】:

  • 我一直在使用BorderLayout,刚刚尝试了GridLayout。这将这两个项目分开了,从技术上讲,JLabel 可能与 JTextField 一样大(我不知道),但我应该说的是我希望 JTextField 与 JLabel 中的文本一样高。使用 GridLayout,它仍然非常高。我要试试 BoxLayout,谢谢你的链接。
  • BoxLayout 也不好。文本字段仍然有一个荒谬的不成比例的高度。
  • @MitchellTurlington:不要盲目地测试所有可能的布局管理器?了解它们的工作原理,并使用适当的设置和适当的设置。挥杆教程讨论了所有这些。
  • 好吧,除了盲目地测试我的>想法
  • 我非常新手,如果您发现我无知,我很抱歉,但事实是我对编程方面的很多事情一无所知。在等待答案出现在这里时,我并不是没有花几个小时浏览教程和谷歌。
猜你喜欢
  • 2012-01-18
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多