Очистить текстовое поле с помощью кнопки (Java)

#java #text #textbox #swt

#java #текст #текстовое поле #swt

Вопрос:

Я пытаюсь очистить два текстовых поля, используя следующий код. Он выполняется без ошибок, но числа, введенные в текстовом поле, не меняются при нажатии кнопки. Есть предложения? Заранее спасибо! 🙂

 btnClear = new Button(shlTestProject, SWT.NONE);
btnClear.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        textBox1.setText("");
        textBox2.setText("");
    }
});
btnClear.setBounds(240, 298, 75, 25);
btnClear.setText("Clear");



    textBox1= new Text(shlTestProject, SWT.BORDER);
    textBox1.setBounds(224, 386, 76, 21);
    textBox1.addVerifyListener(new VerifyListener() {
        public void verifyText(VerifyEvent e) {
            e.doit = false; //assume we don't allow it
            char myChar = e.character; // get the character typed
           if (Character.isDigit(myChar)) e.doit = true; // allow 0-9 
          if (myChar == 'b') { //allow backspace
          e.doit = true;
          }

        }
    });
 

Ответ №1:

Используйте прослушиватель выбора для работы с нажатой кнопкой:

 btnClear.addSelectionListener(new SelectionAdapter()
  {
    @Override
    public void widgetSelected(SelectionEvent e)
    {
      textBox1.setText("");
      textBox2.setText("");
     }
  });
 

Комментарии:

1. Большое спасибо @greg-449! Сначала это не работало, но я понял, что это противоречит имеющемуся у меня verifyListener, чтобы они могли вводить только числа. Я постараюсь обойти это. Еще раз спасибо.

2. Как создаются TextBox1 / 2?

3. Я не знаю, как добавить здесь в комментариях, поэтому я добавил код к своему первоначальному вопросу. Знаете ли вы, как специально создать исключение, позволяющее кнопке сбрасывать текст на пустой, сохраняя при этом символы равными 0-9?

4. Я смог исправить это, используя некоторый код, который я нашел здесь: java2s.com/Code/Java/SWT-JFace-Eclipse/… Спасибо за ваше время, Грег-449, это очень много значит!

Ответ №2:

  clear.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick (View v){
        textView.setText("");

    }
    });
 

Ответ №3:

Как упоминал Александр, внедрите Action Listener в свой класс, а затем просто прослушайте, была ли нажата конкретная кнопка. Если это так, используйте этот код, чтобы очистить текстовое поле. TextFieldName.setText(""); .

Помните, вам нужно запустить событие прослушивателя действий, используя эту строку кода, иначе это не сработает. buttonName.addActionListener(this)

Получайте удовольствие от программирования!

Комментарии:

1. Вопрос о SWT, а не Swing / AWT.