java中如何实现一个按钮拥有两种功能。 即如:按钮JButton jb = new JButton();在监听中,jb可以实现两个功能:开/关。点一次按钮上的文字为:开,第二次点击为:关。再点击又变回:开。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 jb.setText("开"), jb.setText("关");就是这么简单。 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 我觉着这个不错 按一次+1 然后对%2 得到的结果是0 true 得到1 false 再判断 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根本就不可以重写标签。急…… 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();}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(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;}}}}亲,你这段代码我可是在自己机子上试过可以的哦,你确定四楼的那段代码不行么??感觉是一个逻辑意思啊 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();}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(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");}}}}亲,我真的也运行你帮我修改的。但是还是没变化,后来才知道在“开”“关”那里写反了。现在可以了。问题是,四楼你的那个,定义变量不可以那么定义。那样定义会出错。 不过,问题也算是解决啦。只不过我嵌套到我整个程序里又没见效果。看来整个程序里面也有错。 求 spring3 mvc 用到的包, Java操作底层磁盘的类 一个ssh整合的异常 设置struts配置文件后仍然Cannot retrieve mapping for action /AdminLogin 50分求解struts的前台jsp循环读取Action中数据的问题 eclipse中的JSP在tomcat中怎么运行? struts 1 自己action继承的父action的execute方法为什么执行 resin总莫名其妙的重启,为什么? 菜鸟郁闷的问个jboss的启动问题。 网购网站 急!急!急!spring中集成acegi框架后无法上传!! 基于xml的算法描述及代码生成
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
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根本就不可以重写标签。急……
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;}}
}}
亲,你这段代码我可是在自己机子上试过可以的哦,你确定四楼的那段代码不行么??感觉是一个逻辑意思啊
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");}}
}}
亲,我真的也运行你帮我修改的。但是还是没变化,后来才知道在“开”“关”那里写反了。现在可以了。问题是,四楼你的那个,定义变量不可以那么定义。那样定义会出错。
不过,问题也算是解决啦。只不过我嵌套到我整个程序里又没见效果。看来整个程序里面也有错。