如何在Java GUI中设置文本字段位置?

时间:2011-04-10 09:44:37

标签: java user-interface layout

如何在Java GUI中设置文本字段位置?

我试过了:

public Apletas() 
{
    inputLine.setLocation(null);
    inputLine.setLocation(80, 80);
    add(inputLine);
}

但不行。

4 个答案:

答案 0 :(得分:1)

首先,将小程序的布局设置为null

  ...
  public void init()
  {
    setLayout(null);
  }
  ...

答案 1 :(得分:1)

忽略setLocation() / setBounds()& 最特别 setLayout(null)。放弃那些进入那里的所有希望(以及最后的理智残余)。

使用布局管理器设置组件的位置。

对于组件的大小调整,通常在构造函数中提供适当的参数(例如new JTextArea(rows, columns)),或者在某些情况下,使用布局约束(例如BorderLayout.CENTER)就足够了。

对于组件之间的间距,请查看javax.swing.border包和布局管理器构造函数的参数,或者在某些情况下,查看布局约束(例如GridBagLayout& GridBagConstraints)。

示例:

//<applet code='Apletas' width='600' height='400'></applet>
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class Apletas extends JApplet {

    private JTextField inputLine;

    public Apletas()
    {
        inputLine = new JTextField(20);

        JPanel mainGui = new JPanel(new BorderLayout(20,20));
        mainGui.setBorder(new EmptyBorder(80,80,80,80));

        mainGui.add(inputLine, BorderLayout.NORTH);

        mainGui.add(new JScrollPane(new JTextArea(20,10)), BorderLayout.CENTER);
        JTree tree = new JTree();
        tree.expandRow(2);
        mainGui.add(new JScrollPane(tree), BorderLayout.WEST);

        setContentPane(mainGui);
        validate();
    }
}

编译&amp;运行

prompt> javac Apletas.java
prompt> appletviewer Apletas.java

另见

Laying Out Components Within a Container&amp; Java教程中的How to Use Borders

答案 2 :(得分:0)

我不确定你为什么要.setLocation(null)在文本字段上然后重新设置它。

是否在其他地方声明了inputLine(在这种情况下,请在此处发布完整代码)或者您是否遗漏了像

这样的行
TextField inputLine = new TextField("Hello world");

答案 3 :(得分:0)

您必须使用代码

取消默认布局
setLayout(null);

然后可以使用setBounds方法来定位你的秋千 它就像这样

JTextField jt = new JTextField();
jt.setBounds(x,y,width,height);