Java JButton';执行的操作不';t更改JTextField';使用.setText()方法创建文本
我有这个密码。。。其中有一个问题,如标题所示:单击按钮时,JTextField的文本不会更改。我不知道问题出在哪里,但我认为actionPerformed会在消息对话框出现时执行。我尝试使用构造函数(类Start)(而不是函数“doIt”),但它也不起作用Java JButton';执行的操作不';t更改JTextField';使用.setText()方法创建文本,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 {
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!");
}
}
}
你有你的class属性
TextFieldOfIP
,你的ButtonListeners正在执行setText
。但是在doIt()
方法中还有一个名为TextFieldOfIP
的局部变量。这就是你放在JFrame上的对象
删除此重新定义行:
JTextField TextFieldOfIP=newjtextfield(20)您的doIt()
方法的code>。然后,您在JFrame上放置的对象与ButtonListener正在执行setText
的对象相同,一切都将按预期工作。为什么定义了两次
JTextField TextFieldOfIP = new JTextField(20);
从DoIt()方法中删除它,它将起作用