import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
public class MenuDemo extends JFrame implements ActionListener
{
private JTextField jtfNum1,jtfNum2,jtfResult;
private JButton jbtAdd,jbtSub,jbtMul,jbtDiv,jbtClear;
private JMenuItem jmiAdd,jmiSub,jmiMul,jmiDiv,jmiClose;
public static void main(String[] args)
{
MenuDemo frame=new MenuDemo();
frame.pack();
frame.setVisible(true);
}
public MenuDemo()
{
setTitle("Menu Demo");
JPanel p1=new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel("Number 1"));
p1.add(jtfNum1=new JTextField(3));
p1.add(new JLabel("Number 2"));
p1.add(jtfNum2=new JTextField(3));
p1.add(new JLabel("Result"));
p1.add(jtfResult=new JTextField(4));
jtfResult.setEditable(false);
JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jbtAdd=new JButton("Add"));
p2.add(jbtSub=new JButton("Subtract"));
p2.add(jbtMul=new JButton("Multiply"));
p2.add(jbtDiv=new JButton("Divide"));
p2.add(jbtClear=new JButton("Clear"));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1,BorderLayout.CENTER);
getContentPane().add(p2,BorderLayout.SOUTH);
jbtAdd.addActionListener(this);
jbtSub.addActionListener(this);
jbtMul.addActionListener(this);
jbtDiv.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String actionCommand=e.getActionCommand();
if(e.getSource() instanceof JButton)
{
if("Add".equals(actionCommand))
calculate('+');
if("Subtract".equals(actionCommand))
calculate('-');
if("Multily".equals(actionCommand))
calculate('*');
if("Divide".equals(actionCommand))
calculate('/');
if("Clear".equals(actionCommand))
calculate('c');
else if("Close".equals(actionCommand))
System.exit(0);
}
}
public void calculate(char operator)
{
int num1=(Integer.parseInt(jtfNum1.getText().trim()));
int num2=(Integer.parseInt(jtfNum2.getText().trim()));
int result=0;
switch(operator)
{
case '+': result=num1+num2;break;
case '-': result=num1-num2;break;
case '*': result=num1*num2;break;
case '/': result=num1/num2;break;
case 'c': result=num1=num2=result=0;break;
}
jtfResult.setText(String.valueOf(result));
}
}
哪里出现问题了????????
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
public class MenuDemo extends JFrame implements ActionListener
{
private JTextField jtfNum1,jtfNum2,jtfResult;
private JButton jbtAdd,jbtSub,jbtMul,jbtDiv,jbtClear;
private JMenuItem jmiAdd,jmiSub,jmiMul,jmiDiv,jmiClose;
public static void main(String[] args)
{
MenuDemo frame=new MenuDemo();
frame.pack();
frame.setVisible(true);
}
public MenuDemo()
{
setTitle("Menu Demo");
JPanel p1=new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel("Number 1"));
p1.add(jtfNum1=new JTextField(3));
p1.add(new JLabel("Number 2"));
p1.add(jtfNum2=new JTextField(3));
p1.add(new JLabel("Result"));
p1.add(jtfResult=new JTextField(4));
jtfResult.setEditable(false);
JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jbtAdd=new JButton("Add"));
p2.add(jbtSub=new JButton("Subtract"));
p2.add(jbtMul=new JButton("Multiply"));
p2.add(jbtDiv=new JButton("Divide"));
p2.add(jbtClear=new JButton("Clear"));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1,BorderLayout.CENTER);
getContentPane().add(p2,BorderLayout.SOUTH);
jbtAdd.addActionListener(this);
jbtSub.addActionListener(this);
jbtMul.addActionListener(this);
jbtDiv.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String actionCommand=e.getActionCommand();
if(e.getSource() instanceof JButton)
{
if("Add".equals(actionCommand))
calculate('+');
if("Subtract".equals(actionCommand))
calculate('-');
if("Multily".equals(actionCommand))
calculate('*');
if("Divide".equals(actionCommand))
calculate('/');
if("Clear".equals(actionCommand))
calculate('c');
else if("Close".equals(actionCommand))
System.exit(0);
}
}
public void calculate(char operator)
{
int num1=(Integer.parseInt(jtfNum1.getText().trim()));
int num2=(Integer.parseInt(jtfNum2.getText().trim()));
int result=0;
switch(operator)
{
case '+': result=num1+num2;break;
case '-': result=num1-num2;break;
case '*': result=num1*num2;break;
case '/': result=num1/num2;break;
case 'c': result=num1=num2=result=0;break;
}
jtfResult.setText(String.valueOf(result));
}
}
哪里出现问题了????????
解决方案 »
- 这个测试的结果为什么是这样呢?
- 关于DataInputStream与IntputStream的问题
- 如何手工关闭一个button上弹出的菜单?
- 高分通缉:jdbc为什么不提供getrows的方法!
- 字符编码问题
- 如何实现TreeSet的Comparator接口,急!!!我不会写
- 如何导出HTML文件里面的数据?
- 那儿可以下载com.sun.image.codec.jpeg.*包(无内容)
- 从哪儿可以获得jbuilder或者其他java程序的源代码
- 如何比较两张图片是否是一样的?
- 在dos输入appletviewer以后,回车,为什么黑屏幕一闪就没了?怎么解决?
- 刺手问题,关于写通用方法~用泛型?反射?不懂
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;public class MenuDemo extends JFrame implements ActionListener {
private JTextField jtfNum1, jtfNum2, jtfResult;
private JButton jbtAdd, jbtSub, jbtMul, jbtDiv, jbtClear;
private JMenuItem jmiAdd, jmiSub, jmiMul, jmiDiv, jmiClose; public static void main(String[] args) {
MenuDemo frame = new MenuDemo();
frame.pack();
frame.setVisible(true); } public MenuDemo() {
setTitle("Menu Demo"); JPanel p1 = new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel("Number 1"));
p1.add(jtfNum1 = new JTextField(3));
p1.add(new JLabel("Number 2"));
p1.add(jtfNum2 = new JTextField(3));
p1.add(new JLabel("Result"));
p1.add(jtfResult = new JTextField(4));
jtfResult.setEditable(false); JPanel p2 = new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jbtAdd = new JButton("Add"));
p2.add(jbtSub = new JButton("Subtract"));
p2.add(jbtMul = new JButton("Multiply"));
p2.add(jbtDiv = new JButton("Divide"));
p2.add(jbtClear = new JButton("Clear")); getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1, BorderLayout.CENTER);
getContentPane().add(p2, BorderLayout.SOUTH); jbtAdd.addActionListener(this);
jbtSub.addActionListener(this);
jbtMul.addActionListener(this);
jbtDiv.addActionListener(this);
jbtClear.addActionListener(this);//jbtClear也要添加事件
} public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
if (e.getSource() instanceof JButton) {
if ("Add".equals(actionCommand))
calculate('+');
if ("Subtract".equals(actionCommand))
calculate('-');
if ("Multiply".equals(actionCommand))//这里把Multiply也写错了
calculate('*');
if ("Divide".equals(actionCommand))
calculate('/');
if ("Clear".equals(actionCommand))
calculate('c');
else if ("Close".equals(actionCommand))
System.exit(0); }
} public void calculate(char operator) { int num1 = (Integer.parseInt(jtfNum1.getText().trim()));
int num2 = (Integer.parseInt(jtfNum2.getText().trim()));
int result = 0; switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
case 'c':
result = num1 = num2 = result = 0;
break; }
jtfResult.setText(String.valueOf(result));
if(operator == 'c') {//当为清楚的时候,也置前两个为0
jtfNum1.setText("0");
jtfNum2.setText("0");
}
}
}我在程序中注释了有问题的地方
result = num1 = num2 = result = 0;
jtfNum1.setText("0");
jtfNum2.setText("0");
break;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
public class MenuDemo extends JFrame implements ActionListener
{
private JTextField jtfNum1,jtfNum2,jtfResult;
private JButton jbtAdd,jbtSub,jbtMul,jbtDiv,jbtClear;
private JMenuItem jmiAdd,jmiSub,jmiMul,jmiDiv,jmiClose;
public static void main(String[] args)
{
MenuDemo frame=new MenuDemo();
frame.pack();
frame.setVisible(true);}
public MenuDemo()
{
setTitle("Menu Demo");JPanel p1=new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel("Number 1"));
p1.add(jtfNum1=new JTextField(3));
p1.add(new JLabel("Number 2"));
p1.add(jtfNum2=new JTextField(3));
p1.add(new JLabel("Result"));
p1.add(jtfResult=new JTextField(4));
jtfResult.setEditable(false);
JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jbtAdd=new JButton("+"));
p2.add(jbtSub=new JButton("-"));
p2.add(jbtMul=new JButton("*"));
p2.add(jbtDiv=new JButton("/"));
p2.add(jbtClear=new JButton("c"));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1,BorderLayout.CENTER);
getContentPane().add(p2,BorderLayout.SOUTH);
jbtAdd.addActionListener(this);
jbtSub.addActionListener(this);
jbtMul.addActionListener(this);
jbtDiv.addActionListener(this);
jbtClear.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String actionCommand=e.getActionCommand();
if(e.getSource() instanceof JButton)
{
if("+".equals(actionCommand))
calculate("Add");
if("-".equals(actionCommand))
calculate("Subtract");
if("*".equals(actionCommand))
calculate("Multiply");
if("/".equals(actionCommand))
calculate("Divide");
if("c".equals(actionCommand))
calculate("Clear");
else if("Close".equals(actionCommand))
System.exit(0); }
}
public void calculate(String operator)//改成了字符串型不可以,因为switch返回的要是int型的。那要怎么改呢?
{int num1=(Integer.parseInt(jtfNum1.getText().trim()));
int num2=(Integer.parseInt(jtfNum2.getText().trim()));
int result=0;
switch(operator)
{
case "Add": result=num1+num2;break;
case "Subtract": result=num1-num2;break;
case "Multiply": result=num1*num2;break;
case "Divide": result=num1/num2;break;
case "Clear": {
jtfNum1.setText("0");
jtfNum2.setText("0");
}}jtfResult.setText(String.valueOf(result));}
}
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
public class MenuDemo extends JFrame implements ActionListener
{
private JTextField jtfNum1,jtfNum2,jtfResult;
private JButton jbtAdd,jbtSub,jbtMul,jbtDiv,jbtClear;
public static void main(String[] args)
{
MenuDemo frame=new MenuDemo();
frame.pack();
frame.setVisible(true);
}
public MenuDemo()
{
setTitle("Menu Demo");
JPanel p1=new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel("Number 1"));
p1.add(jtfNum1=new JTextField(3));
p1.add(new JLabel("Number 2"));
p1.add(jtfNum2=new JTextField(3));
p1.add(new JLabel("Result"));
p1.add(jtfResult=new JTextField(4));
jtfResult.setEditable(false);
JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jbtAdd=new JButton("+"));
p2.add(jbtSub=new JButton("-"));
p2.add(jbtMul=new JButton("*"));
p2.add(jbtDiv=new JButton("/"));
p2.add(jbtClear=new JButton("c"));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1,BorderLayout.CENTER);
getContentPane().add(p2,BorderLayout.SOUTH);
jbtAdd.addActionListener(this);
jbtSub.addActionListener(this);
jbtMul.addActionListener(this);
jbtDiv.addActionListener(this);
jbtClear.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String actionCommand=e.getActionCommand();
if(e.getSource() instanceof JButton)
{
if("+".equals(actionCommand))
calculate('+');
if("-".equals(actionCommand))
calculate('-');
if("*".equals(actionCommand))
calculate('*');
if("/".equals(actionCommand))
calculate('/');
if("c".equals(actionCommand))
calculate('c');
else if("Close".equals(actionCommand))
System.exit(0);
}
}
public void calculate(char operator)
{
int num1=(Integer.parseInt(jtfNum1.getText().trim()));
int num2=(Integer.parseInt(jtfNum2.getText().trim()));
int result=0;
switch(operator)
{
case '+': result=num1+num2;break;
case '-': result=num1-num2;break;
case '*': result=num1*num2;break;
case '/': result=num1/num2;break;
case 'c':{
jtfNum1.setText("0");
jtfNum2.setText("0");
}
}
jtfResult.setText(String.valueOf(result));
}
}就像这样……但是我总觉得代码怪怪的……
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;public class MenuDemo extends JFrame implements ActionListener {
private JTextField jtfNum1, jtfNum2, jtfResult;
private JButton jbtAdd, jbtSub, jbtMul, jbtDiv, jbtClear;
private JMenuItem jmiAdd, jmiSub, jmiMul, jmiDiv, jmiClose; public static void main(String[] args) {
MenuDemo frame = new MenuDemo();
frame.pack();
frame.setVisible(true); } public MenuDemo() {
setTitle("Menu Demo"); JPanel p1 = new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel("Number 1"));
p1.add(jtfNum1 = new JTextField(3));
p1.add(new JLabel("Number 2"));
p1.add(jtfNum2 = new JTextField(3));
p1.add(new JLabel("Result"));
p1.add(jtfResult = new JTextField(4));
jtfResult.setEditable(false); JPanel p2 = new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jbtAdd = new JButton("+"));
p2.add(jbtSub = new JButton("-"));
p2.add(jbtMul = new JButton("*"));
p2.add(jbtDiv = new JButton("/"));
p2.add(jbtClear = new JButton("c")); getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1, BorderLayout.CENTER);
getContentPane().add(p2, BorderLayout.SOUTH); jbtAdd.addActionListener(this);
jbtSub.addActionListener(this);
jbtMul.addActionListener(this);
jbtDiv.addActionListener(this);
jbtClear.addActionListener(this);//jbtClear也要添加事件
} public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
if (e.getSource() instanceof JButton) {
calculate(actionCommand.charAt(0));
}
} public void calculate(char operator) { int num1 = (Integer.parseInt(jtfNum1.getText().trim()));
int num2 = (Integer.parseInt(jtfNum2.getText().trim()));
int result = 0; switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
case 'c':
result = num1 = num2 = result = 0;
jtfNum1.setText("0");
jtfNum2.setText("0");
break; }
jtfResult.setText(String.valueOf(result));
}
}那这样,应该能满足你的需求了吧!
public char charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
如果索引指定的 char 值是代理项,则返回代理项值。
指定者:
接口 CharSequence 中的 charAt
参数:
index - char 值的索引。
返回:
此字符串指定索引处的 char 值。第一个 char 值位于索引 0 处。
抛出:
IndexOutOfBoundsException - 如果 index 参数为负或小于此字符串的长度。