java - 使用 JTextField 和 BoxLayout 设置 Swing 格式

标签 java swing user-interface formatting jtextfield

JTextField area2 = new JTextField();
JTextField searchtext=new JTextField();
JPanel mainframe = new JPanel();
JButton searchbutton=new JButton("Submit");
JButton registerbutton=new JButton("Login/Register");

mainframe.setLayout(new BoxLayout(mainframe, BoxLayout.Y_AXIS));
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();

p1.setLayout(new BoxLayout(p1, BoxLayout.X_AXIS)); 
p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS));
p4.setLayout(new BoxLayout(p4, BoxLayout.X_AXIS));
p1.setBorder(BorderFactory.createTitledBorder("FLIGHT LISTINGS"));
p2.setBorder(BorderFactory.createTitledBorder("SEARCH"));
p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS)); 
p3.setBorder(BorderFactory.createTitledBorder("User Account"));
p3.add(registerbutton);
p2.add(searchtext);
p2.add(searchbutton);

ImageIcon icon = new ImageIcon("map.jpg"); 
JLabel thumb = new JLabel();
thumb.setIcon(icon);
p4.add(thumb);

mainframe.add(p3);
mainframe.add(p4);
mainframe.add(p2);
mainframe.add(p1);
this.add(mainframe);

这是我的代码,结果似乎总是给我一个看起来很糟糕的输出。我宁愿我的 JTextField 只有 1 行高,而不是那么厚。有人可以告诉我我做错了什么吗?

这是毁灭性的结果:http://imgur.com/XCuDefM

最佳答案

mainframe.setLayout(new BoxLayout(mainframe, BoxLayout.Y_AXIS));

BoxLayout 将根据框架中的可用空间增长组件。因此,如果您的文本字段增长到不合理的大小,则意味着您正在使用:

frame.setSize(...);

并为您的框架提供一些随机尺寸,该尺寸不适合您添加到框架中的组件。

相反,您应该使用:

frame.pack();

并且所有组件都将以其首选尺寸显示。

让布局管理器完成他们的工作,不要为组件分配尺寸。

关于java - 使用 JTextField 和 BoxLayout 设置 Swing 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33704304/

相关文章:

user-interface - Django REST 框架 : slow browsable UI because of large related table

javascript - 在 Web UI 中可视化有向图的建议

java - 如何取消焦点 JTextField

swing - 斯卡拉 SBT : scala compiler version

java - 将 JMenuBar 和 JPanel 添加到 JFrame

java - 无法将 c3p0 日志记录转至文件

java - 在 Android 中处理方向变化的正确方法

java - 无法创建交易异常 : Could not open Hibernate Session for transaction

java - 无法删除 GAE 文件

java - 有什么办法可以在运行时将字符串存储在 context.xml 中?