获取组合框信息的问题 我在做一个四则运算器。把加减乘除都放到组合框里了,怎么获得组合框里的信息呢?我这么写的但不对 if( box.getName().equals("+") ) { num3 = num1 + num2; }如果组合框信息选“加”就执行加操作。编译后 提示 空指针错误 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.guiaction;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame{ public static JTextField jf1, jf2, jf3; public static String[] str = {"+","-","*","/"}; public static Container c; public static JComboBox box; public static JButton end; public static String str1; public static String str2, str3; public static int num1, num2, num3; ArithmeticOrgan() { super("Arithmetic Organ 1.0 by Mr Wang"); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); addComponent(); c = getContentPane(); c.setLayout(new FlowLayout()); c.add(jf1); c.add(box); c.add(jf2); c.add(end); c.add(jf3); this.pack(); this.setLocation(300, 200); this.setVisible(true); } void addComponent() { jf1 = new JTextField(4); box = new JComboBox(str); box.addActionListener(new ComBoxListener()); jf2 = new JTextField(4); end = new JButton("="); end.addActionListener(new ButtonListener()); jf3 = new JTextField(4); } public static void main(String[] args) { new ArithmeticOrgan(); }}class ComBoxListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String a = e.getActionCommand(); ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText(); ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1); ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText(); ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2); if(a.equals(ArithmeticOrgan.box.getName())) { ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2; } }}class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Integer NUM3=new Integer(ArithmeticOrgan.num3); ArithmeticOrgan.str3 = NUM3.toString(); ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3); }} package com.guiaction;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame{ public static JTextField jf1, jf2, jf3; public static String[] str = {"+","-","*","/"}; public static Container c; public static JComboBox box; public static JButton end; public static String str1; public static String str2, str3; public static int num1, num2, num3; ArithmeticOrgan() { super("Arithmetic Organ 1.0 by Mr Wang"); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); addComponent(); c = getContentPane(); c.setLayout(new FlowLayout()); c.add(jf1); c.add(box); c.add(jf2); c.add(end); c.add(jf3); this.pack(); this.setLocation(300, 200); this.setVisible(true); } void addComponent() { jf1 = new JTextField(4); box = new JComboBox(str); box.addActionListener(new ComBoxListener()); jf2 = new JTextField(4); end = new JButton("="); end.addActionListener(new ButtonListener()); jf3 = new JTextField(4); } public static void main(String[] args) { new ArithmeticOrgan(); }}class ComBoxListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String a = e.getActionCommand(); ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText(); ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1); ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText(); ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2); if(a.equals(ArithmeticOrgan.box.getName())) { ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2; } }}class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Integer NUM3=new Integer(ArithmeticOrgan.num3); ArithmeticOrgan.str3 = NUM3.toString(); ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3); }} package com.guiaction;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame{ public static JTextField jf1, jf2, jf3; public static String[] str = {"+","-","*","/"}; public static Container c; public static JComboBox box; public static JButton end; public static String str1; public static String str2, str3; public static int num1, num2, num3; ArithmeticOrgan() { super("Arithmetic Organ 1.0 by Mr Wang"); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); addComponent(); c = getContentPane(); c.setLayout(new FlowLayout()); c.add(jf1); c.add(box); c.add(jf2); c.add(end); c.add(jf3); this.pack(); this.setLocation(300, 200); this.setVisible(true); } void addComponent() { jf1 = new JTextField(4); box = new JComboBox(str); box.addActionListener(new ComBoxListener()); jf2 = new JTextField(4); end = new JButton("="); end.addActionListener(new ButtonListener()); jf3 = new JTextField(4); } public static void main(String[] args) { new ArithmeticOrgan(); }}class ComBoxListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String a = e.getActionCommand(); ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText(); ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1); ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText(); ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2); if(a.equals(ArithmeticOrgan.box.getName())) { ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2; } }}class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Integer NUM3=new Integer(ArithmeticOrgan.num3); ArithmeticOrgan.str3 = NUM3.toString(); ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3); }} package com.guiaction;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame{ public static JTextField jf1, jf2, jf3; public static String[] str = {"+","-","*","/"}; public static Container c; public static JComboBox box; public static JButton end; public static String str1; public static String str2, str3; public static int num1, num2, num3; ArithmeticOrgan() { super("Arithmetic Organ 1.0 by Mr Wang"); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); addComponent(); c = getContentPane(); c.setLayout(new FlowLayout()); c.add(jf1); c.add(box); c.add(jf2); c.add(end); c.add(jf3); this.pack(); this.setLocation(300, 200); this.setVisible(true); } void addComponent() { jf1 = new JTextField(4); box = new JComboBox(str); box.addActionListener(new ComBoxListener()); jf2 = new JTextField(4); end = new JButton("="); end.addActionListener(new ButtonListener()); jf3 = new JTextField(4); } public static void main(String[] args) { new ArithmeticOrgan(); }}class ComBoxListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String a = e.getActionCommand(); ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText(); ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1); ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText(); ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2); //这里可能有错误 加法不能用 结果是0 不知道怎么回事 if(a.equals(ArithmeticOrgan.box.getName())) { ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2; } }}class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Integer NUM3=new Integer(ArithmeticOrgan.num3); ArithmeticOrgan.str3 = NUM3.toString(); ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3); }} a.equals(ArithmeticOrgan.box.getName())看一下a和ArithmeticOrgan.box.getName()的值应该就知道原因了 if ("+".equals((String)combo.getSelectedItem())) 你也不看getName的API文档。 a和ArithmeticOrgan.box.getName()我写的测试程序是相等的if ("+".equals((String)combo.getSelectedItem())) 我改成这样了也不对的。 import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JFormattedTextField;import java.text.NumberFormat;public class ArithmeticOrgan extends JFrame{ private static final String[] OPERATORS = {"+","-","*","/"}; private JFormattedTextField input1, input2, result; private JComboBox combo; private JButton equals; public ArithmeticOrgan() { super("Arithmetic Organ 1.0 by Mr Wang"); initComponents(); Box container = Box.createHorizontalBox(); container.add(input1); container.add(combo); container.add(input2); container.add(equals); container.add(result); setContentPane(container); pack(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setLocationRelativeTo(null); this.setVisible(true); } private void initComponents() { NumberFormat format = NumberFormat.getIntegerInstance(); input1 = new JFormattedTextField(format); input1.setColumns(4); combo = new JComboBox(OPERATORS); input2 = new JFormattedTextField(format); input2.setColumns(4); equals = new JButton("="); equals.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt) { try { int i1 = Integer.parseInt(input1.getText()); int i2 = Integer.parseInt(input2.getText()); switch(combo.getSelectedIndex()) { case 0: result.setText(Integer.toString(i1+i2)); break; case 1: result.setText(Integer.toString(i1-i2)); break; case 2: result.setText(Integer.toString(i1*i2)); break; case 3: result.setText(Integer.toString(i1/i2)); break; default: result.setText(""); } } catch(NumberFormatException e) { assert false; // 不会该执行到这里,必须的! } catch(ArithmeticException ae) { System.err.println(ae); } } }); result = new JFormattedTextField(format); result.setColumns(4); } public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run(){ new ArithmeticOrgan(); } }); }} 谢谢楼上,您的代码我会仔细阅读的!运行一切正常,就是有个地方我们都没学习,不知道那是什么java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new ArithmeticOrgan(); } });居然还可以这么用。这个叫匿名内部类吗?呵呵,菜鸟一个,见笑了! JDBC 问题 用ResourceBundle访问属性文件报异常,就几行代码 java GUI 程序源码???/ 使用接口式编程的好处是什么? 提问:关于JAVA中的类型转换问题 请教大家 请投中国的长城和布达拉宫一票!!!!那中国就能获得国际基金的世界遗产拨款! 阿里笔试题 关于类的静态加载顺序 求高人解答 朋友们谁公司要人能帮忙推荐下,万分感谢。2年互联网开发经验,简历我写到内容里了。 如何用java实现图像传输呢? 关于Java泛型和反射的设计一段代码,不是很理解~ 为什么这样使用信号量会死锁?
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame
{
public static JTextField jf1, jf2, jf3;
public static String[] str = {"+","-","*","/"};
public static Container c;
public static JComboBox box;
public static JButton end; public static String str1; public static String str2, str3;
public static int num1, num2, num3;
ArithmeticOrgan()
{
super("Arithmetic Organ 1.0 by Mr Wang");
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addComponent();
c = getContentPane();
c.setLayout(new FlowLayout());
c.add(jf1);
c.add(box);
c.add(jf2);
c.add(end);
c.add(jf3);
this.pack();
this.setLocation(300, 200);
this.setVisible(true);
}
void addComponent()
{
jf1 = new JTextField(4);
box = new JComboBox(str);
box.addActionListener(new ComBoxListener());
jf2 = new JTextField(4);
end = new JButton("=");
end.addActionListener(new ButtonListener());
jf3 = new JTextField(4);
}
public static void main(String[] args)
{
new ArithmeticOrgan();
}}class ComBoxListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
String a = e.getActionCommand();
ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText();
ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1);
ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText();
ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2);
if(a.equals(ArithmeticOrgan.box.getName()))
{
ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2;
}
}
}class ButtonListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
Integer NUM3=new Integer(ArithmeticOrgan.num3);
ArithmeticOrgan.str3 = NUM3.toString();
ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3);
}
}
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame
{
public static JTextField jf1, jf2, jf3;
public static String[] str = {"+","-","*","/"};
public static Container c;
public static JComboBox box;
public static JButton end; public static String str1; public static String str2, str3;
public static int num1, num2, num3;
ArithmeticOrgan()
{
super("Arithmetic Organ 1.0 by Mr Wang");
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addComponent();
c = getContentPane();
c.setLayout(new FlowLayout());
c.add(jf1);
c.add(box);
c.add(jf2);
c.add(end);
c.add(jf3);
this.pack();
this.setLocation(300, 200);
this.setVisible(true);
}
void addComponent()
{
jf1 = new JTextField(4);
box = new JComboBox(str);
box.addActionListener(new ComBoxListener());
jf2 = new JTextField(4);
end = new JButton("=");
end.addActionListener(new ButtonListener());
jf3 = new JTextField(4);
}
public static void main(String[] args)
{
new ArithmeticOrgan();
}}class ComBoxListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
String a = e.getActionCommand();
ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText();
ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1);
ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText();
ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2);
if(a.equals(ArithmeticOrgan.box.getName()))
{
ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2;
}
}
}class ButtonListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
Integer NUM3=new Integer(ArithmeticOrgan.num3);
ArithmeticOrgan.str3 = NUM3.toString();
ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3);
}
}
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame
{
public static JTextField jf1, jf2, jf3;
public static String[] str = {"+","-","*","/"};
public static Container c;
public static JComboBox box;
public static JButton end; public static String str1; public static String str2, str3;
public static int num1, num2, num3;
ArithmeticOrgan()
{
super("Arithmetic Organ 1.0 by Mr Wang");
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addComponent();
c = getContentPane();
c.setLayout(new FlowLayout());
c.add(jf1);
c.add(box);
c.add(jf2);
c.add(end);
c.add(jf3);
this.pack();
this.setLocation(300, 200);
this.setVisible(true);
}
void addComponent()
{
jf1 = new JTextField(4);
box = new JComboBox(str);
box.addActionListener(new ComBoxListener());
jf2 = new JTextField(4);
end = new JButton("=");
end.addActionListener(new ButtonListener());
jf3 = new JTextField(4);
}
public static void main(String[] args)
{
new ArithmeticOrgan();
}}class ComBoxListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
String a = e.getActionCommand();
ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText();
ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1);
ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText();
ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2);
if(a.equals(ArithmeticOrgan.box.getName()))
{
ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2;
}
}
}class ButtonListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
Integer NUM3=new Integer(ArithmeticOrgan.num3);
ArithmeticOrgan.str3 = NUM3.toString();
ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3);
}
}
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;public class ArithmeticOrgan extends JFrame
{
public static JTextField jf1, jf2, jf3;
public static String[] str = {"+","-","*","/"};
public static Container c;
public static JComboBox box;
public static JButton end; public static String str1; public static String str2, str3;
public static int num1, num2, num3;
ArithmeticOrgan()
{
super("Arithmetic Organ 1.0 by Mr Wang");
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addComponent();
c = getContentPane();
c.setLayout(new FlowLayout());
c.add(jf1);
c.add(box);
c.add(jf2);
c.add(end);
c.add(jf3);
this.pack();
this.setLocation(300, 200);
this.setVisible(true);
}
void addComponent()
{
jf1 = new JTextField(4);
box = new JComboBox(str);
box.addActionListener(new ComBoxListener());
jf2 = new JTextField(4);
end = new JButton("=");
end.addActionListener(new ButtonListener());
jf3 = new JTextField(4);
}
public static void main(String[] args)
{
new ArithmeticOrgan();
}}class ComBoxListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
String a = e.getActionCommand();
ArithmeticOrgan.str1 = ArithmeticOrgan.jf1.getText();
ArithmeticOrgan.num1 = Integer.parseInt(ArithmeticOrgan.str1);
ArithmeticOrgan.str2 = ArithmeticOrgan.jf2.getText();
ArithmeticOrgan.num2 = Integer.parseInt(ArithmeticOrgan.str2);
//这里可能有错误 加法不能用 结果是0 不知道怎么回事
if(a.equals(ArithmeticOrgan.box.getName()))
{
ArithmeticOrgan.num3 = ArithmeticOrgan.num1 + ArithmeticOrgan.num2;
}
}
}class ButtonListener implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
Integer NUM3=new Integer(ArithmeticOrgan.num3);
ArithmeticOrgan.str3 = NUM3.toString();
ArithmeticOrgan.jf3.setText(ArithmeticOrgan.str3);
}
}
看一下a和ArithmeticOrgan.box.getName()的值应该就知道原因了
我改成这样了也不对的。
import java.awt.event.ActionListener;import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JFormattedTextField;import java.text.NumberFormat;public class ArithmeticOrgan extends JFrame
{
private static final String[] OPERATORS = {"+","-","*","/"};
private JFormattedTextField input1, input2, result;
private JComboBox combo;
private JButton equals;
public ArithmeticOrgan()
{
super("Arithmetic Organ 1.0 by Mr Wang");
initComponents(); Box container = Box.createHorizontalBox();
container.add(input1);
container.add(combo);
container.add(input2);
container.add(equals);
container.add(result);
setContentPane(container); pack();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
this.setVisible(true);
}
private void initComponents()
{
NumberFormat format = NumberFormat.getIntegerInstance();
input1 = new JFormattedTextField(format);
input1.setColumns(4); combo = new JComboBox(OPERATORS); input2 = new JFormattedTextField(format);
input2.setColumns(4); equals = new JButton("=");
equals.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt)
{
try
{
int i1 = Integer.parseInt(input1.getText());
int i2 = Integer.parseInt(input2.getText());
switch(combo.getSelectedIndex())
{
case 0: result.setText(Integer.toString(i1+i2)); break;
case 1: result.setText(Integer.toString(i1-i2)); break;
case 2: result.setText(Integer.toString(i1*i2)); break;
case 3: result.setText(Integer.toString(i1/i2)); break;
default: result.setText("");
}
}
catch(NumberFormatException e)
{
assert false; // 不会该执行到这里,必须的!
}
catch(ArithmeticException ae)
{
System.err.println(ae);
}
}
});
result = new JFormattedTextField(format);
result.setColumns(4);
}
public static void main(String[] args)
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run(){
new ArithmeticOrgan();
}
});
}
}
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ArithmeticOrgan();
}
});居然还可以这么用。这个叫匿名内部类吗?呵呵,菜鸟一个,见笑了!