String str=e.getActioncommand()作用
时间: 2024-03-30 09:33:43 浏览: 40
这段代码的作用是获取 ActionEvent 对象中触发事件的命令字符串。在 Java 中,很多组件(比如按钮、菜单等)都可以设置一个字符串作为其命令字符串(command string),当该组件被点击或者按下回车键时,就会触发一个动作事件,并且该事件中会包含触发事件的组件的命令字符串。通过调用 ActionEvent 对象的 getActionCommand 方法,就可以获取到该命令字符串。在 actionPerformed 方法中,通常会根据命令字符串进行不同的操作,从而实现不同的功能。例如,如果有两个按钮分别设置了 "save" 和 "cancel" 作为它们的命令字符串,那么在 actionPerformed 方法中就可以通过获取命令字符串来区分用户点击的是哪个按钮,从而执行不同的操作。
相关问题
public static void main(String[] args) throws Exception { JFrame frame=new JFrame("记事本程序"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400,400); frame.setVisible(true); JTextField textField=new JTextField(); frame.add(textField); // 制作菜单栏 JMenuBar jMenuBar=new JMenuBar(); // 2个菜单文件和编辑 JMenu jMenu1=new JMenu("文件"); JMenu jMenu2=new JMenu("编辑"); // 菜单功能,按钮 JMenuItem jMenuItem1=new JMenuItem("打开"); jMenuItem1.addActionListener(new Hello()); jMenuItem1.setActionCommand("打开"); JMenuItem jMenuItem2=new JMenuItem("保存"); JMenuItem jMenuItem3=new JMenuItem("xing'j"); // 添加菜单栏 frame.setJMenuBar(jMenuBar); // 添加2个菜单 jMenuBar.add(jMenu1); jMenuBar.add(jMenu2); // 菜单加功能 jMenu1.add(jMenuItem1); jMenu2.add(jMenuItem2); } @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("打开")) { //文件选择框 JFileChooser fileChooser = new JFileChooser(); // 定义标题 fileChooser.setDialogTitle("选择文件"); // 设置默认路径 fileChooser.showOpenDialog(null); // 弹出窗口 fileChooser.setVisible(true); // 保存绝对路径 String address = fileChooser.getSelectedFile().getAbsolutePath(); try { FileReader fileReader = new FileReader(address); BufferedReader bufferedReader = new BufferedReader(fileReader); String str = ""; String strAll = ""; while ((str = bufferedReader.readLine()) != null) { strAll += str; } textField.setText(strAll); bufferedReader.close(); fileReader.close(); } catch (IOException fileNotFoundException) { fileNotFoundException.printStackTrace(); } } }
这段代码使用Java Swing编写了一个简单的记事本程序。程序打开后,会展示一个文本框和一个菜单栏,菜单栏包括文件和编辑两个菜单。文件菜单下有打开和保存功能,编辑菜单下有一个名为“xing'j”的按钮,但没有实现具体功能。当点击打开菜单下的打开功能时,会弹出一个文件选择框,用户可以选择任意一个文件,程序会将文件内容读入到文本框中展示出来。
.编写JFrame程序实现一个计算器,包括十个数字(0-9)按钮和四个运算符(加、减、乘、除)按钮,以及等号和清空两个辅助按钮,还有一个显示输入输出的文本框。程序中使用BorderLayout和GridLayout
以下是 Java 实现一个简单计算器的示例代码:
```java
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField textField;
private JButton button0, button1, button2, button3, button4, button5, button6, button7, button8, button9;
private JButton buttonAdd, buttonSub, buttonMul, buttonDiv, buttonEqu, buttonC;
private double num1 = 0, num2 = 0;
private String operator = "";
public Calculator() {
super("Calculator");
textField = new JTextField(20);
textField.setEditable(false);
button0 = new JButton("0");
button1 = new JButton("1");
button2 = new JButton("2");
button3 = new JButton("3");
button4 = new JButton("4");
button5 = new JButton("5");
button6 = new JButton("6");
button7 = new JButton("7");
button8 = new JButton("8");
button9 = new JButton("9");
buttonAdd = new JButton("+");
buttonSub = new JButton("-");
buttonMul = new JButton("*");
buttonDiv = new JButton("/");
buttonEqu = new JButton("=");
buttonC = new JButton("C");
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(4, 3));
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);
panel1.add(button5);
panel1.add(button6);
panel1.add(button7);
panel1.add(button8);
panel1.add(button9);
panel1.add(button0);
panel1.add(buttonC);
panel1.add(buttonEqu);
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout(4, 1));
panel2.add(buttonAdd);
panel2.add(buttonSub);
panel2.add(buttonMul);
panel2.add(buttonDiv);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(textField, BorderLayout.NORTH);
panel.add(panel1, BorderLayout.CENTER);
panel.add(panel2, BorderLayout.EAST);
button0.addActionListener(this);
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
buttonAdd.addActionListener(this);
buttonSub.addActionListener(this);
buttonMul.addActionListener(this);
buttonDiv.addActionListener(this);
buttonEqu.addActionListener(this);
buttonC.addActionListener(this);
this.add(panel);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new Calculator();
}
public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
if ("0123456789".indexOf(str) != -1) {
textField.setText(textField.getText() + str);
return;
}
if ("+-*/".indexOf(str) != -1) {
num1 = Double.parseDouble(textField.getText());
operator = str;
textField.setText("");
return;
}
if ("=".equals(str)) {
num2 = Double.parseDouble(textField.getText());
double result = 0;
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
textField.setText("除数不能为0!");
return;
} else {
result = num1 / num2;
}
break;
default:
break;
}
textField.setText(Double.toString(result));
operator = "";
return;
}
if ("C".equals(str)) {
textField.setText("");
num1 = 0;
num2 = 0;
operator = "";
return;
}
}
}
```
这个程序使用了 BorderLayout 和 GridLayout 布局管理器来布置计算器的按钮,并实现了按钮的事件处理逻辑。用户点击数字按钮时,将数字添加到文本框中;用户点击运算符按钮时,将第一个数值和运算符保存下来,并清空文本框;用户点击等号按钮时,将第二个数值取出来,根据运算符计算结果,并显示在文本框中;用户点击清空按钮时,将所有状态清空。
阅读全文