Tra*_*Can 4 java swing jtextfield flowlayout
有人可以向我解释一下,为什么每次我使用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方法.
请注意,如果您希望文本字段跨越整个宽度,则可能需要使用其他布局,然后使用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);
      }
    } );
  }
}
| 归档时间: | 
 | 
| 查看次数: | 11796 次 | 
| 最近记录: |