在运行时更改JTextField的位置

时间:2012-01-09 12:07:10

标签: java swing jtextfield

使用Java Swing。我创建了一个文本字段和一个按钮。如果我单击按钮,文本字段应向左移动100.如何执行此操作?

3 个答案:

答案 0 :(得分:4)

ALittleToTheLeft.java screen shot

从一次移动5px的微调器转换为一次移动100px的按钮,留给读者练习。 ;)

import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.EmptyBorder;

class ALittleToTheLeft {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new GridLayout(0,1));

                JTextField input = new JTextField(10);

                // not strictly necessary for some components,
                // but good for ones that already have a border.
                final JPanel inputContainer = new JPanel(new GridLayout());
                inputContainer.add(input);
                inputContainer.setBorder(new EmptyBorder(0,200,0,0));
                gui.add(inputContainer);

                SpinnerNumberModel inputAlignmentModel =
                    new SpinnerNumberModel(200,0,200,5);

                final JSpinner inputAlignment =
                    new JSpinner(inputAlignmentModel);
                inputAlignment.addChangeListener( new ChangeListener() {
                    public void stateChanged(ChangeEvent ce) {
                        int leftPad = ((Integer)inputAlignment.
                            getValue()).intValue();
                        int rightPad = 200-leftPad;
                        inputContainer.setBorder(
                            new EmptyBorder(0,leftPad,0,rightPad));
                    }
                });
                gui.add(inputAlignment);

                JOptionPane.showMessageDialog(null, gui);
            }
        });
    }
}

答案 1 :(得分:2)

以下是jtextfiled的不同构造函数

  • 的JTextField()          构造一个新的TextField。 JTextField(文档doc,String text,int columns)          构造一个新的JTextField,它使用给定的文本存储模型和给定的列数。
  • 的JTextField(INT 列)          构造一个具有指定列数的新空TextField。
  • JTextField(字符串文字)          构造一个使用指定文本初始化的新TextField。
  • JTextField(String text,int columns)          构造一个使用指定文本和列初始化的新TextField。

您可以使用等方法更改jtextfield的不同属性

  • setAction(动作a),
  • setActionCommand(String command),
  • setColumns(int columns),
  • setDocument(文档doc),
  • setFont(字体f),
  • setHorizo​​ntalAlignment(int alignment),
  • setScrollOffset(int scrollOffset)

参考Class JTextField

修改

移动文本字段需要两个类属性x,y ,并且每次单击都会更改要移动的x和y的值,然后在单击按钮时设置文本字段的边界。遵循

textField.setBounds(x, y,width,height);

答案 2 :(得分:0)

在构造函数中你可以像这样设置

int x=100,y=100,width=100,height=20;              
jtextfield.setBounds(x,y,width,height)
add(jtextField);

然后为按钮添加actionperformed事件......

在动作事件中

  jTextField.setBounds(x,y+200,width,height);
  add(jtextField);
  setVisbile(true);