黑马程序员技术交流社区
标题:
JAVA这段代码有什么问题,运行报错啊
[打印本页]
作者:
hzhzhen
时间:
2015-5-22 23:33
标题:
JAVA这段代码有什么问题,运行报错啊
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import java.util.Scanner;
public class Convert {
private JFrame f=null;
private JTextField t1=null;
private JTextField t2=null;
private JButton b=null;
private JRadioButton r1=null;
private JRadioButton r2=null;
private ButtonGroup bg=null;
public Convert(){
f=new JFrame("字符大小写转换");
Container c=f.getContentPane();
// c.setLayout(new GridLayout(1,3));
JPanel p=new JPanel();
// p.setLayout(new GridLayout(1,3));
p.setBorder(BorderFactory.createTitledBorder("输入字符串再按转换按钮"));
t1=new JTextField(20);
t2=new JTextField(20);
b=new JButton("转换");
bg=new ButtonGroup();
r1=new JRadioButton("大写");
r2=new JRadioButton("小写");
bg.add(r1);
bg.add(r2);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成的方法存根
String c=bg.getSelection().getActionCommand();
boolean up=c.equals("大写");
String t=t1.getText();
if(up){
t2.setText(t.toUpperCase());
}else{
t2.setText(t.toLowerCase());
}
}
});
p.add(t1);
p.add(b);
p.add(r1);
p.add(r2);
p.add(t2);
c.add(p);
f.setSize(300, 150);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new Convert();
}
}
复制代码
作者:
马也keyboard
时间:
2015-5-28 10:32
我把哥们你的代码测试了一下
发现问题应该是出在了第36行,你调用的是getSelection().getActionCommand();这两个方法,获取组中选择的按钮(getSelection())这个没问题,问题就出在getActionCommand()。
getActionCommand所返回的是“动作命令字符串”,并不是JRadioButton实例化时的文本,所以要应该在实例化后(第30行后)加一个“动作命令字符串”的设置方法r1.setActionCommand("大写");r2.setActionCommand("小写");
这样这个问题就解决了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2