Java-JTextField填充所有帧
我试图实现一个非常简单的任务:创建一个不会填满所有屏幕的JTextField。目前我认为只有使用setMaximumSize才能实现这一点,还有其他方法吗?这是我的密码:Java-JTextField填充所有帧,java,swing,jframe,jtextfield,Java,Swing,Jframe,Jtextfield,我试图实现一个非常简单的任务:创建一个不会填满所有屏幕的JTextField。目前我认为只有使用setMaximumSize才能实现这一点,还有其他方法吗?这是我的密码: JFrame window = new JFrame(); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); wi
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
window.setSize(screenSize.width / 2, screenSize.height / 2);
window.setLocation(screenSize.width / 4, screenSize.height / 4);
window.setResizable(false);
JPanel pane = new JPanel();
pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS));
pane.setBorder(new EmptyBorder(10, 10, 10, 10));
pane.add(new JTextField(10));
window.setContentPane(pane);
使用
GridBagLayout
这将为您在屏幕的每个组件中设置约束提供一种方法 问题来自:
对于从上到下的框布局,容器的首选宽度是子容器的最大首选宽度如果强制容器宽度大于此值,BoxLayout
尝试将每个组件的宽度调整为容器宽度的大小(减去插图)。如果组件的最大尺寸小于容器的宽度,则X对齐将起作用
(我的重点)。因此,正如您所提到的,您使用BoxLayout
的选项是设置最大大小(然后根据需要处理对齐):
否则,您将不得不使用不同的。很多事情都能奏效。首先,只需拆下线路即可
pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS));
要使用默认的流程布局
请注意,如果在框架中放置更多组件,此问题可能会“自行修复”,因为可能会调整其他组件的大小。查找有关布局管理器的教程。JPanel的默认布局管理器是FlowLayout。只需使用FlowLayout而不是BoxLayout。
pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS));