Java里面的一个简单问题 图形界面 按钮

来源:百度知道 编辑:UC知道 时间:2024/06/25 20:49:56
/*???这里怎么改才可以单击按钮后在窗体上显示文字??*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JButtonDemo extends JFrame
{
public JButtonDemo()
{
super("JButtonDemo");
Container c=getContentPane();
c.setLayout(new FlowLayout());
setSize(400,200);

JLabel label1=new JLabel(":Hello");
c.add( label1 );

JButton button2=new JButton("确定");
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

this.setText("ddddd");/*???这里怎么改才可以单击按钮后在窗体上显示文字??*/

}
});

c.add(button2);

JButton button1=new JButton("退出");
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});

this.setText("ddddd");
注意这句的this 其实这个this指的是那个ActionListener 并不是button2 自然无法更改button2的文本

改成这样就可以了
((JButton)e.getSource()).setText("ddddd");


JLabel label1=new JLabel(":Hello");
改成:
final JLabel label1=new JLabel(":Hello");

然后将:
this.setText("ddddd");
改成:
label1.setText("你想要的文字就行了);

把程序调试一下,它会提示你监听代码为内部类,访问局部变量label1不合法,须把label声明为final最终类型。我认为生命为finl太国死板,程序扩展性不好。
我觉得应该把JLabel的声明放在构造函数外部,声明为全局变量。然后在构造函数内部创建对象。
public class JButtonDemo extends JFrame
{
JLabel label1; //对象声明
public JButtonDemo()
{
…………
label1=new JLabel(":Hello");//创建对象
c.add( label1 ); //这里应该没问题
…………
label.setText("ddddd"); //这里要这样改

你用的是linux操作系统吗,我在linux下遇到这问题在windows 下没有遇到过