Java 通过操作事件更改JPanel组件的属性

Java 通过操作事件更改JPanel组件的属性,java,jframe,jpanel,actionlistener,Java,Jframe,Jpanel,Actionlistener,我正在尝试设置一个系统,当我按下一个按钮时,JLabel文本将改变,但我似乎无法使其工作。我已经通过执行“system.out.printltest;”测试了动作侦听器是否工作。它工作得很好,但当试图更改JComponent文本时,它不起作用。我已经搜索了答案,但没有找到有效的答案 主要类别: 包com.fcs.app; 公共A类{ 公共静态字符串参数[]{ 窗口w=新窗口; w、 拉窗; } } JFrame和JPanel类: 包com.fcs.app; 导入java.awt.*; 导入jav

我正在尝试设置一个系统,当我按下一个按钮时,JLabel文本将改变,但我似乎无法使其工作。我已经通过执行“system.out.printltest;”测试了动作侦听器是否工作。它工作得很好,但当试图更改JComponent文本时,它不起作用。我已经搜索了答案,但没有找到有效的答案

主要类别:

包com.fcs.app; 公共A类{ 公共静态字符串参数[]{ 窗口w=新窗口; w、 拉窗; } } JFrame和JPanel类:

包com.fcs.app; 导入java.awt.*; 导入javax.swing.*; 公共类窗口扩展了JPanel{ JFrame jf=新JFrame; JPanel jp=新的JPanel; JButton b1=新JButton; JTextField tf1=新的JTextField; JTextField tf2=新的JTextField; JLabel plus=新的JLabel; JLabel等于=新的JLabel; JLabel rt=新的JLabel; int结果=10; 公共空窗{ //JFrame设置 jf.SetSize400400; jf.setUndercoratedTrue; jf.setLayoutnull; jf.setContentPanejp; jf.setLocation100100; jf.setDefaultCloseOperationJFrame.EXIT在关闭时退出; jf.setVisibletrue; //JPanel设置 jp.SetSize400400; jp.setLocation0,0; jp.setBackgroundColor.WHITE; jp.addb1; jp.addtf1; jp.addtf2; jp.addplus; jp.addequals; jp.addrt; jp.setLayoutnull; jp.setVisibletrue; //按钮设置 b1.setFontnew FontTimes,Font.PLAIN,15; b1.计算!; b1.setSize100,40; b1.SETLOCATION150350; b1.AddActionListener新建侦听器; b1.setVisibletrue; //文本字段1设置 tf1.setSize120,50; tf1.setLocation140,20; tf1.setFontnew FontTimes,Font.PLAIN,25; tf1.setHorizontalAlignment jtextfield.CENTER; tf1.setVisibletrue; //文本字段2设置 tf2.setSize120,50; tf2.setLocation140120; tf2.setFontnew FontTimes,Font.PLAIN,25; tf2.setHorizontalAlignmentJTextField.CENTER; tf2.setVisibletrue; //加号设置 加上。设置尺寸120,50; 加上。设置位置140、70; plus.setHorizontalAlignment jLabel.CENTER; plus.setFontnew FontTimes,Font.PLAIN,40; plus.setText+; plus.setVisibletrue; //等号设置 等于。设置大小120,50; 等于.setLocation140170; equals.setHorizontalAlignmentJLabel.CENTER; 等于.setFontnew FontTimes,Font.PLAIN,40; 等于.setText=; equals.setVisibletrue; //结果文本 rt.setSize400,50; rt.setLocation0,250; rt.setHorizontalAlignmentJLabel.CENTER; rt.setFontnew FontTimes,Font.PLAIN,60; rt.setText; rt.setVisibletrue; } } ActionListener类:

包com.fcs.app; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 公共类侦听器实现ActionListener{ 窗口w=新窗口; @凌驾 公共无效诉讼执行事件e{ //TODO自动生成的方法存根 w、 rt.setTextTest; } }
您正在创建窗口的新引用,如窗口w=新窗口; 它将创建一个新的窗口实例,而您正试图更改新创建的窗口。 尝试在window类或中传递以前创建的window对象 在窗口类中实现匿名ActionListener

b1.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    rt.setText("Test");
    }

}

});

顺便说一句,我还是一个java初学者,所以我知道如果这看起来像一个愚蠢的问题,我该怎么做我之前试着把action listener放在window类中,但我遇到了一系列错误,所以我不太确定我该如何做在构造函数方法中的window类中实现listener非常感谢。。。成功了。对不起,如果我的问题看起来有点不对劲。。。但是谢谢你的帮助该死的我一开始不这么做就觉得自己像个白痴XD