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
答案 0 :(得分:2)
mainframe.setLayout(new BoxLayout(mainframe, BoxLayout.Y_AXIS));
BoxLayout将根据框架中的可用空间增长组件。因此,如果您的文本字段增长到不合理的大小,这意味着您正在使用:
frame.setSize(...);
并且为您的框架提供一些随机大小,该大小不适合您添加到框架中的组件。
相反,你应该使用:
frame.pack();
并且所有组件将以其首选大小显示。
让布局管理员完成工作,不要为组件分配大小。