【发布时间】: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 消失(标签保持正确的大小和正确的位置)。
-
从这里复制-> 从这里跟随-> docs.oracle.com/javase/tutorial/displayCode.html?code=https://…
-
SpringLayout 很难用;它实际上是供交互式 GUI 构建器软件使用的。如果你打算编写复杂的用户界面,你应该学习 GridBagLayout(它与 GridLayout 不一样);它很难学(因为布局通常很复杂),但是一旦你了解了它的工作原理,它就会非常有用。
标签: java swing user-interface layout layout-manager