在监听中,jb可以实现两个功能:开/关。
点一次按钮上的文字为:开,第二次点击为:关。再点击又变回:开。
10 个解决方案
#1
可以设置一个全局变量、点次开关就累计加一、
取模运算 等于1 和等于0 在累加多少次之后 从新给该变量赋值
取模运算 等于1 和等于0 在累加多少次之后 从新给该变量赋值
#2
传参数 1就是开 0就是关
#3
jb.setText("开"), jb.setText("关");就是这么简单。
#4
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
#5
这样行不通啊。
#6
你可以给按钮设置个 状态的变量 1为开 , 0为关 初始为0 按第一下1 在按下0
#7
我觉着这个不错 按一次+1 然后对%2 得到的结果是0 true 得到1 false 再判断
#8
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 mark;
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("开");
mark=true; //用于中止线程的run()方法
i=i+1;
}
else
{
mark = false;
jb.setActionCommand("关");
i=i+1;
}
}
}
}
这个程序还是不行,思想应该跟你的差不多。不知道错在哪,还是说JButton根本就不可以重写标签。急……
#9
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 mark;
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(" 关");//这里忘了改变文本值,所以你看不出效果来
mark=true; //用于中止线程的run()方法
i=i+1;
}
else
{
mark = false;
jb.setActionCommand("关");
jb.setText(" 关");//这里忘了改变文本值,所以你看不出效果来
i=i+1;
}
}
}
}
亲,你这段代码我可是在自己机子上试过可以的哦,你确定四楼的那段代码不行么??感觉是一个逻辑意思啊
#10
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 mark;
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]
mark=true; //用于中止线程的run()方法
i=i+1;
System.out.println("hello ");
}
else
{
mark = false;
jb.setActionCommand("开");
jb.setText("关");//这里忘了改变文本值,所以你看不出效果来[/color]
i=i+1;
System.out.println("nonono");
}
}
}
}
亲,我真的也运行你帮我修改的。但是还是没变化,后来才知道在“开”“关”那里写反了。现在可以了。问题是,四楼你的那个,定义变量不可以那么定义。那样定义会出错。
不过,问题也算是解决啦。只不过我嵌套到我整个程序里又没见效果。看来整个程序里面也有错。
#1
可以设置一个全局变量、点次开关就累计加一、
取模运算 等于1 和等于0 在累加多少次之后 从新给该变量赋值
取模运算 等于1 和等于0 在累加多少次之后 从新给该变量赋值
#2
传参数 1就是开 0就是关
#3
jb.setText("开"), jb.setText("关");就是这么简单。
#4
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
#5
这样行不通啊。
#6
你可以给按钮设置个 状态的变量 1为开 , 0为关 初始为0 按第一下1 在按下0
#7
我觉着这个不错 按一次+1 然后对%2 得到的结果是0 true 得到1 false 再判断
#8
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 mark;
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("开");
mark=true; //用于中止线程的run()方法
i=i+1;
}
else
{
mark = false;
jb.setActionCommand("关");
i=i+1;
}
}
}
}
这个程序还是不行,思想应该跟你的差不多。不知道错在哪,还是说JButton根本就不可以重写标签。急……
#9
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 mark;
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(" 关");//这里忘了改变文本值,所以你看不出效果来
mark=true; //用于中止线程的run()方法
i=i+1;
}
else
{
mark = false;
jb.setActionCommand("关");
jb.setText(" 关");//这里忘了改变文本值,所以你看不出效果来
i=i+1;
}
}
}
}
亲,你这段代码我可是在自己机子上试过可以的哦,你确定四楼的那段代码不行么??感觉是一个逻辑意思啊
#10
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 mark;
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]
mark=true; //用于中止线程的run()方法
i=i+1;
System.out.println("hello ");
}
else
{
mark = false;
jb.setActionCommand("开");
jb.setText("关");//这里忘了改变文本值,所以你看不出效果来[/color]
i=i+1;
System.out.println("nonono");
}
}
}
}
亲,我真的也运行你帮我修改的。但是还是没变化,后来才知道在“开”“关”那里写反了。现在可以了。问题是,四楼你的那个,定义变量不可以那么定义。那样定义会出错。
不过,问题也算是解决啦。只不过我嵌套到我整个程序里又没见效果。看来整个程序里面也有错。