文本框内的按钮

时间:2011-01-01 01:24:28

标签: java user-interface swing

我的代码在文本框中显示一个按钮,但是当输入值更改时,文本框的大小也会更改。我不喜欢。是否有任何解决方案使文本框大小保持固定?或者关于如何在文本框中创建按​​钮的任何其他想法? 以下是我的代码:

JPanel panel = new JPanel();
panel.setLayout( new FlowLayout(FlowLayout.CENTER, 0, 0) );
panel.add(textField);
panel.add(button);
panel.setBackground( textField.getBackground() );
panel.setBorder( textField.getBorder() );
textField.setBorder(null);

5 个答案:

答案 0 :(得分:1)

尝试BorderLayout并在BorderLayout.CENTER处添加文本字段,在BorderLayout.EAST处添加按钮。

答案 1 :(得分:1)

我尝试了你的代码,它似乎对我来说很好,稍作修改。可能是面板正在调整自身大小,而不是textField。尝试将面板包裹在另一个JPanel中以强制其形状。

JPanel panel      = new JPanel();
JPanel outerPanel = new JPanel();
panel.setLayout( new FlowLayout(FlowLayout.CENTER, 0, 0) );
panel.add(textField);
panel.add(button);
panel.setBackground( textField.getBackground() );
panel.setBorder( textField.getBorder() );
textField.setBorder(null);
outerPanel.add(panel);

答案 2 :(得分:1)

您的示例似乎是文章Component Border中讨论的第二种选择。相反,您可能需要install()一个ComponentBorder,这是后来在同一篇文章中描述的第三个替代。

答案 3 :(得分:1)

  

是否有任何解决方案使文本框大小保持不变?

我猜你正在创建JTextField,如:

JTextField textField = new JTextField();

在这种情况下,文本字段大小会随着向其添加文本而更改。

相反,你应该使用:

JTextField textField = new JTextField(10);

并且文本字段将保持不变大小,在滚动之前至少保留10个字符。

答案 4 :(得分:-1)

使用其他布局,或尝试绝对定位