java无法设置textfield的大小

时间:2015-06-06 08:29:40

标签: java swing

以下是使用文本字段创建框架的代码:

   static  void showteacherDel()
    {
    JFrame frame3 = new JFrame();
    frame3.setSize(640,480);
    JPanel pn = new JPanel();
    pn.setSize(640,480);
    frame3.add(pn);
    frame3.setResizable(false);

    JTextField tf = new JTextField();
    tf.setSize(300,500);
    Component add = pn.add(tf);

    //frame3.pack();
    frame3.setVisible(true);
 }
}

现在问题就在于此。您看到我创建了一个面板,然后将其文本字段添加到其中。

原因是我的文本字段,无论我设置的大小,都产生了整个框架。

所以我创建了一个面板并向其添加了文本字段。

但无论我给出的是什么尺寸,它都会显示一个点对象,它实际上是一个文本字段。

3 个答案:

答案 0 :(得分:1)

主要问题是您似乎不了解组件是如何通过布局管理API布局的,例如,如果我们看一下我们可以看到的代码:

JFrame frame3=new JFrame();
frame3.setSize(640,480);
JPanel pn=new JPanel();
// Pointless, as the JFrame is using a `BorderLayout`
// so the component will be the available size of it's parent
// container...
//pn.setSize(640,480);
frame3.add(pn);
frame3.setResizable(false);

JTextField tf=new JTextField();
// Pointless, as pn is using a `FlowLayout` so the
// text field will be laid out using it's preferred size
//tf.setSize(300,500);
// Provide a sizing hint, in combination with the fields
// font...
tf.setColumns(25);
Component add = pn.add(tf);

//frame3.pack();
frame3.setVisible(true);

我不确定为什么你想要JTextField500像素高,也许你想要一个JTextArea

详细了解Laying Out Components Within a Container了解更多详情。

答案 1 :(得分:1)

试试这段代码:

JTextField tf = new JTextField(10);

我在支架中添加了10个尺寸。

答案 2 :(得分:0)

你可以使用tf.setText("你的文字");

将它添加到面板中,然后将该面板添加到您的框架中然后设置为可见(true)然后它将明确可见