即如:按钮JButton jb = new JButton();
在监听中,jb可以实现两个功能:开/关。
点一次按钮上的文字为:开,第二次点击为:关。再点击又变回:开。

解决方案 »

  1.   

    jb.setText("开"), jb.setText("关");就是这么简单。
      

  2.   


    JButton jb=new JButton("开");
    jb.addActionListener(new btnClick());
    public class btnClick implements ActionListener{
    public void actionPerformed(ActionEvent e) {
    JButton jb=(JButton)e.getSource();
    if(jb.getText().equals("开")){
    jb.setText("关");
    }
    else if(jb.getText().equals("关")){
    jb.setText("开");
    }
    }

    }这样应该就行了,如果不行把text换成ActionCommand
      

  3.   

     我觉着这个不错  按一次+1  然后对%2  得到的结果是0   true    得到1  false   再判断
      

  4.   


    package de;import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.*;public class som extends JFrame implements ActionListener{
    private static final long serialVersionUID = 1L;
    static int i=0;
    JButton jb;
    boolean ;
    public som()
    {
        
        
    Panel p = new Panel();
    jb = new JButton("关");
    jb.addActionListener(this);
    p.add(jb);
    add(p);
    this.setVisible(true);
    this.pack();

    }

    public static void main(String args[])
    {
    new som();
    } @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource()==jb)
    {
    if(i%2==0)
    {

    jb.setActionCommand("开");
    =true; //用于中止线程的run()方法
    i=i+1;
    }
    else
    {
     = false;

    jb.setActionCommand("关");
    i=i+1;

        }

    }
    }

    }
    这个程序还是不行,思想应该跟你的差不多。不知道错在哪,还是说JButton根本就不可以重写标签。急……
      

  5.   


    package de;import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.*;public class som extends JFrame implements ActionListener{
    private static final long serialVersionUID = 1L;
    static int i=0;
    JButton jb;
    boolean ;
    public som()
    {
        
        
    Panel p = new Panel();
    jb = new JButton("关");
    jb.addActionListener(this);
    p.add(jb);
    add(p);
    this.setVisible(true);
    this.pack();}public static void main(String args[])
    {
    new som();
    }@Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource()==jb)
    {
    if(i%2==0)
    {jb.setActionCommand("开");
    jb.setText(" 关");//这里忘了改变文本值,所以你看不出效果来
    =true; //用于中止线程的run()方法
    i=i+1;
    }
    else
    {
     = false;jb.setActionCommand("关");
    jb.setText(" 关");//这里忘了改变文本值,所以你看不出效果来
    i=i+1;}}
    }}
    亲,你这段代码我可是在自己机子上试过可以的哦,你确定四楼的那段代码不行么??感觉是一个逻辑意思啊
      

  6.   

    package de;import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.*;public class som extends JFrame implements ActionListener{
    private static final long serialVersionUID = 1L;
    static int i=0;
    JButton jb;
    boolean ;
    public som()
    {
        
        
    Panel p = new Panel();
    jb = new JButton("关");
    jb.addActionListener(this);
    p.add(jb);
    add(p);
    this.setVisible(true);
    this.pack();}public static void main(String args[])
    {
    new som();
    }@Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource()==jb)
    {
    if(i%2==0)
    {jb.setActionCommand("关");
    jb.setText("开");//这里忘了改变文本值,所以你看不出效果来[/color]
    =true; //用于中止线程的run()方法
    i=i+1;
    System.out.println("hello ");
    }
    else
    {
     = false;jb.setActionCommand("开");
    jb.setText("关");//这里忘了改变文本值,所以你看不出效果来[/color]
    i=i+1;
    System.out.println("nonono");}}
    }}
    亲,我真的也运行你帮我修改的。但是还是没变化,后来才知道在“开”“关”那里写反了。现在可以了。问题是,四楼你的那个,定义变量不可以那么定义。那样定义会出错。 
    不过,问题也算是解决啦。只不过我嵌套到我整个程序里又没见效果。看来整个程序里面也有错。