有人可以向我解释一下为什么我每次都使用 FlowLayout 布局管理器吗
我的文本字段显示为狭缝。
我已经被这个问题撞了一段时间了,我似乎无法弄清楚
找出为什么会出错。
我有一种感觉,这是一件简单的事情,我一次又一次地忽视,所以如果
有人可以向我解释这个现象,我将永远感激不已。
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Console
{
public Console()
{
makeConsole();
}
private void makeConsole()
{
JFrame console = new JFrame("ArchiveConsole");
Container base = console.getContentPane();
base.setSize(400, 250);
console.setSize(base.getSize());
base.setLayout(new FlowLayout(FlowLayout.CENTER, 5,5));
JTextField tf = new JTextField();
tf.setSize(base.getWidth(), 25);
base.add(tf);
console.setVisible(true);
}
}
来自 Swing 布局管理器教程
FlowLayout 类将组件排成一行,并按其首选大小调整大小。如果容器中的水平空间太小而无法将所有组件放在一行中,则 FlowLayout 类会使用多行。如果容器比一行组件所需的宽度宽,则默认情况下该行在容器内水平居中
因此,您需要调整文本字段的首选大小,最好使用setColumns
method.
请注意,如果您希望文本字段跨越整个宽度,您可能需要使用其他布局,然后FlowLayout
由于上述原因
例如,下面的代码给出了一个好看的JTextField
,但我已经硬编码了列数
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
public class TextFieldWithFlowLayout {
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
JFrame console = new JFrame("ArchiveConsole");
Container base = console.getContentPane();
base.setLayout(new FlowLayout( FlowLayout.CENTER, 5,5));
JTextField tf = new JTextField();
tf.setColumns( 20 );
base.add(tf);
console.pack();
console.setVisible(true);
}
} );
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)