小学德育实践活动总结:一个java程序-要求当点按钮时,Label上的字符会相应改变。出了些问题....程序如下:

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/02 17:25:40
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class First extends JPanel
{
private JButton btn;
private JLabel j;
public First()
{
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
btnListener l=new btnListener();
btn.addActionListener(l);
btn=new JButton("click");
j=new JLabel("ok");
j.setBackground(Color.YELLOW);
add(btn);
add(j);
}
private class btnListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==btn)
j.setText("Cancel");
else
j.setText("That's all!");
}
}
}
主程序:import javax.swing.JFrame;

public class Driver {

public static void main(String[] args)
{
JFrame frm=new JFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );

First f=new First();
frm.getContentPane().add(f);
frm.pack();
frm.setVisible(true);

}

}

你程序思路写的不太清楚,所以我就乱猜一下吧:有两种改法。
第一,你再加入一个按扭,同样的加入和btn一样监听,像这样,JButton jb = new JButton("other");不要忘了把这个加到面板里,add(jb);同时加上监听:jb.addActionListener(i);
第二,再考滤一下你的要求,因为你程序里面用了if(event.getSource()==btn)做判断,event.getSource()获得的会变吗?不会,所以JLabel里的内容也不会变。如果你要用一个按扭实现JLabel里的内容改变的话,建议你再加入一个变量,用来记得单击按扭的次数,再根据这个单击的次数决定应该执行j.setText("Cancel"); 还是
j.setText("That's all!"); 举个例子:
在程序声明一个变量: private int k = 0;
再修改监听代码:
public void actionPerformed(ActionEvent event)
{
k++;
if(k%2==0)
j.setText("Cancel");
else
j.setText("That's all!");
}