【问题标题】:Java Swing GUI layoutJava Swing GUI 布局
【发布时间】:2018-05-03 04:45:01
【问题描述】:

我正在构建一个简单的 Swing 应用程序,我想让文本字段/组合框/下拉列表等从左到右在页面上向下移动。我还希望能够将文本字段和组合框的大小调整为文本的大小,而不是更大,就像在网页上一样。

我创建了一个JFrame,其中包含一个窗格列表。目前,“搜索”窗格的右侧有一个标签,然后是文本字段,然后是一个搜索按钮,它们都垂直显示在屏幕的整个长度上。

代码如下:

public class SearchEvent {

public JPanel createSearchPane() {
    JTextField searchEvent = new JTextField();
    //searchEvent.setSize(10, 20);
    //searchEvent.setSize(new Dimension(10, 10));
    JPanel panel = new JPanel();
    GridLayout topLayout = new GridLayout(1,1);
    panel.setLayout(topLayout); 
    panel.add(new JLabel("Event  to search"));
    panel.add(searchEvent);
}
}

MainClass{

private static void createAndShowGUI() {
    JFrame frame = new JFrame("Search Event ");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTabbedPane tabbedPane = new JTabbedPane();

    tabbedPane.addTab("Search", null, new SearchEvent().createSearchPane(),"Search an event");
    tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);

            //Display the window.
    frame.pack();
    frame.setVisible(true);
}

如何让文本域显示在屏幕右侧,文本域中文本的大小以及文本域左侧显示的标签?

【问题讨论】:

  • 了解GridLayout constructor 的作用。您当前正在指定一行一列的 GridLayout。 (无论如何,GridLayout 是错误的布局;请阅读 the official tutorial 中的其他布局。)
  • 所以我已经看过这个了,但我决定试试 SpringLayout。当窗口调整大小时,字段变得庞大也是同样的问题。我不希望在调整窗口大小时文本字段变得更大,文本字段不会超过 20 个字符左右,所以我不希望该字段的高度很大,或者窗口增加时的宽度它的大小看起来很傻。如果我在文本字段上设置最大大小,它似乎也不起作用,因为当我最大化窗口时,texffields 消失(标签保持正确的大小和正确的位置)。
  • SpringLayout 很难用;它实际上是供交互式 GUI 构建器软件使用的。如果你打算编写复杂的用户界面,你应该学习 GridBagLayout(它与 GridLayout 不一样);它很难学(因为布局通常很复杂),但是一旦你了解了它的工作原理,它就会非常有用。

标签: java swing user-interface layout layout-manager


【解决方案1】:

使用 springLayout 我通过以下两行实现了我想要做的事情:

textField.setMinimumsize(tf.getPreferredsize()) textField.setMaximumSize(tf.getPreferredSize())

对于我想做的事情,我不确定是否值得花时间学习 gridbaglayout

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2011-09-12
    • 2012-01-29
    • 2019-04-04
    • 2014-12-20
    • 2016-08-26
    相关资源
    最近更新 更多