Изменить местоположение JTextField во время выполнения - PullRequest
0 голосов
/ 09 января 2012

Я использую Java Swing. Я создаю одно текстовое поле и кнопку. Если я нажму кнопку, текстовое поле должно переместиться влево на 100. Как это сделать?

Ответы [ 3 ]

4 голосов
/ 09 января 2012

ALittleToTheLeft.java screen shot

Преобразование из счетчика, который перемещается на 5 пикселей за раз, в кнопку, перемещающуюся на 100 пикселей за раз, оставлено для читателя в качестве упражнения.;)

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);
            }
        });
    }
}
2 голосов
/ 09 января 2012

следующие - это другой конструктор для jtextfiled

  • JTextField () Создает новый TextField.JTextField (Document doc, String text, int columns) Создает новый JTextField, который использует заданную модель хранения текста и заданное количество столбцов.
  • JTextField (столбцы int) Создает новый пустой TextField с указанным количеством столбцов.
  • JTextField (String text) Создает новый TextFieldинициализируется с указанным текстом.
  • JTextField (String text, int columns) Создает новое TextField, инициализированное с указанным текстом и столбцами.

также Вы можете изменить различные свойства jtextfield, используя методы , такие как

  • setAction (Action a),
  • setActionCommand (команда String),
  • setColumns (intстолбцы),
  • setDocument (Документ документа),
  • setFont (шрифт f),
  • setHor HorizontalAlignment (выравнивание по внутренней стороне),
  • setScrollOffset (int scrollOffset)

см. Класс JTextField

РЕДАКТИРОВАТЬ

для перемещения текстового поля требуется два атрибута класса x,y и при каждом щелчке изменяйте значения x и y, как вы хотите переместить, затем установитеграницы текстового поля при нажатии кнопки. Как следует

textField.setBounds(x, y,width,height);
0 голосов
/ 16 апреля 2013

в construtor вы можете установить так

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

Затем добавить действие, выполненное для кнопки ......

в событии действия

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