我有一个带有2个JLabel,2个JTextField和一个JButton的GridLayout(3,2),如下所示。我将它们添加为图片或代码中所示。一切都很好,但JTextField的大小太大,我希望它如我画的红线所示。我试过说jtf3.setPreferredSize( new Dimension( x, y ) );
,但是它根本没有改变尺寸。另一种解决方案是例如使GridLayout稍微GridLayout(3,2,1,50)
(通过添加50),但这也将JLabels移到顶部...我只想完全如图所示...有什么想法吗?非常感谢
JPanel copying_panel = new JPanel();
copying_panel.setLayout(new GridLayout(3, 2));
copying_panel.setBackground(new Color(200, 221, 242));
JLabel jl4 = new JLabel("From:", SwingConstants.CENTER);
JTextField jtf3 = new JTextField();
JLabel jl5 = new JLabel("To:", SwingConstants.CENTER);
JTextField jtf4 = new JTextField();
JLabel jl6 = new JLabel();
JButton jb2 = new JButton("Go");
copying_panel.add(jl4);
copying_panel.add(jtf3);
copying_panel.add(jl5);
copying_panel.add(jtf4);
copying_panel.add(jl6);
copying_panel.add(jb2);
最佳答案
这就是GridLayout
的工作方式,它为所有组件提供了相等的空间。相反,请考虑使用GridBagLayout
。
有关更多详细信息,请参见How to Use GridBagLayout
JPanel copying_panel = new JPanel();
copying_panel.setLayout(new GridBagLayout());
copying_panel.setBackground(new Color(200, 221, 242));
JLabel jl4 = new JLabel("From:", SwingConstants.CENTER);
JTextField jtf3 = new JTextField(10);
JLabel jl5 = new JLabel("To:", SwingConstants.CENTER);
JTextField jtf4 = new JTextField(10);
JButton jb2 = new JButton("Go");
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
copying_panel.add(jl4, gbc);
gbc.gridy++;
copying_panel.add(jl5, gbc);
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridx++;
gbc.gridy = 0;
copying_panel.add(jtf3, gbc);
gbc.gridy++;
copying_panel.add(jtf4, gbc);
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
gbc.gridy++;
copying_panel.add(jb2, gbc);
关于java - Java在GridLayout中更改JTextField的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27391049/