#java #swing
#java #swing
Вопрос:
У меня есть этот код … в нем есть проблема, как в заголовке: текст JTextField не изменяется при нажатии кнопки. Я не знаю, в чем проблема, но я думаю, что actionPerformed выполняется при появлении диалогового окна сообщения. Я попытался использовать конструктор (класса Start) (вместо функции «doIt»), но он тоже не работает.
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.*;
import java.awt.event.*;
public class PalTransfer
{
public static void main(String[] args)
{
Starter starter = new Starter();
starter.doIt();
}
}
class Starter
{
JFrame PTMainFrame = new JFrame("In/Out - arch - access, ...");
JTextField TextFieldOfIP = new JTextField(20);
//String string = "I AM START OF STARTER";
void doIt()
{
PTMainFrame.setSize(900, 400); // Set the frame size
PTMainFrame.setLocationRelativeTo(null);
PTMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField TextFieldOfIP = new JTextField(20);
JButton jBtn = new JButton("I AM A BUTTON!");
PTMainFrame.add(jBtn);
PTMainFrame.add(TextFieldOfIP);
FlowLayout layoutManager = new FlowLayout(0,10,5);
PTMainFrame.setLayout(layoutManager);
TextFieldOfIP.setText("I am doIt() method!"); //
jBtn.addActionListener(new ButtonListener());
PTMainFrame.setVisible(true); // to do // put later
}
class ButtonListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "hello?");
TextFieldOfIP.setText("I am actionPerformed of JButton!");
}
}
}
Ответ №1:
Почему вы определили это дважды.
JTextField TextFieldOfIP = new JTextField(20);
Удалите его из метода DoIt(), он будет работать.
Ответ №2:
У вас есть атрибут класса TextFieldOfIP
, который ваши ButtonListeners выполняют setText
. Но, кроме того, у вас есть локальная переменная, вызываемая TextFieldOfIP
в вашем doIt()
методе. И это объект, который вы размещаете в своем JFrame.
Удалите эту строку переопределения: JTextField TextFieldOfIP = new JTextField(20);
вашего doIt()
метода. Затем вы помещаете в свой JFrame тот же объект, который выполняет ваш ButtonListener, setText
и все будет работать так, как ожидалось.