frame.getContentPane().add(new Operator());frame.getContentPane().add(new Operator());
时间: 2024-02-18 15:03:23 浏览: 105
这段代码是将 Operator 对象添加到 JFrame 窗口的内容面板上。
在 Java 中,JFrame 窗口是由内容面板和其他组件组成的,内容面板是窗口中的主要部分,用于显示其他组件。getContentPane() 方法可以获取 JFrame 窗口的内容面板,然后使用 add() 方法将 Operator 对象添加到内容面板上。
这里的 add() 方法会将 Operator 对象添加到内容面板的最后一个位置上。如果希望将 Operator 对象添加到指定的位置上,可以使用其他重载的 add() 方法,例如:
```
frame.getContentPane().add(new Operator(), BorderLayout.CENTER);
```
这行代码将 Operator 对象添加到内容面板的中央位置上。
需要注意的是,这段代码中添加了两个 Operator 对象,如果没有使用布局管理器或者没有设置组件的位置和大小,两个 Operator 对象可能会重叠在一起,导致显示异常。
相关问题
java计算器,支持2、8、10进制,采用btnBin.setBounds,切换进制时清空。
好的,下面是一个简单的Java计算器代码,它支持2、8、10进制,并且可以切换进制时清空已输入的内容。需要注意的是,这个代码只是一个简单的示例,如果您需要更加完善的计算器功能,还需要进行更多的开发工作。
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField display;
private JButton button0, button1, button2, button3, button4, button5, button6, button7, button8, button9;
private JButton buttonAdd, buttonSub, buttonMul, buttonDiv, buttonEqual, buttonDot, buttonClear;
private JButton buttonBin, buttonOct, buttonDec;
private int operator = 0;
private double temp = 0.0;
private boolean clearFlag = false;
private int radix = 10;
public Calculator() {
super("Calculator");
Container container = getContentPane();
container.setLayout(new BorderLayout());
display = new JTextField("0");
display.setEditable(false);
display.setHorizontalAlignment(JTextField.RIGHT);
container.add(display, BorderLayout.NORTH);
JPanel panelButton = new JPanel();
panelButton.setLayout(new GridLayout(5, 4));
button7 = new JButton("7");
panelButton.add(button7);
button7.addActionListener(this);
button8 = new JButton("8");
panelButton.add(button8);
button8.addActionListener(this);
button9 = new JButton("9");
panelButton.add(button9);
button9.addActionListener(this);
buttonAdd = new JButton("+");
panelButton.add(buttonAdd);
buttonAdd.addActionListener(this);
buttonBin = new JButton("Bin");
panelButton.add(buttonBin);
buttonBin.addActionListener(this);
buttonBin.setBounds(5, 160, 60, 20);
button4 = new JButton("4");
panelButton.add(button4);
button4.addActionListener(this);
button5 = new JButton("5");
panelButton.add(button5);
button5.addActionListener(this);
button6 = new JButton("6");
panelButton.add(button6);
button6.addActionListener(this);
buttonSub = new JButton("-");
panelButton.add(buttonSub);
buttonSub.addActionListener(this);
buttonOct = new JButton("Oct");
panelButton.add(buttonOct);
buttonOct.addActionListener(this);
button1 = new JButton("1");
panelButton.add(button1);
button1.addActionListener(this);
button2 = new JButton("2");
panelButton.add(button2);
button2.addActionListener(this);
button3 = new JButton("3");
panelButton.add(button3);
button3.addActionListener(this);
buttonMul = new JButton("*");
panelButton.add(buttonMul);
buttonMul.addActionListener(this);
buttonDec = new JButton("Dec");
panelButton.add(buttonDec);
buttonDec.addActionListener(this);
button0 = new JButton("0");
panelButton.add(button0);
button0.addActionListener(this);
buttonDot = new JButton(".");
panelButton.add(buttonDot);
buttonDot.addActionListener(this);
buttonClear = new JButton("C");
panelButton.add(buttonClear);
buttonClear.addActionListener(this);
buttonDiv = new JButton("/");
panelButton.add(buttonDiv);
buttonDiv.addActionListener(this);
buttonEqual = new JButton("=");
panelButton.add(buttonEqual);
buttonEqual.addActionListener(this);
container.add(panelButton, BorderLayout.CENTER);
setSize(300, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String input = e.getActionCommand();
if (input.equals("0") || input.equals("1") || input.equals("2") || input.equals("3") || input.equals("4")
|| input.equals("5") || input.equals("6") || input.equals("7") || input.equals("8")
|| input.equals("9") || input.equals(".")) {
if (clearFlag) {
display.setText("");
clearFlag = false;
}
display.setText(display.getText() + input);
} else if (input.equals("+")) {
temp = Double.parseDouble(display.getText());
operator = 1;
clearFlag = true;
} else if (input.equals("-")) {
temp = Double.parseDouble(display.getText());
operator = 2;
clearFlag = true;
} else if (input.equals("*")) {
temp = Double.parseDouble(display.getText());
operator = 3;
clearFlag = true;
} else if (input.equals("/")) {
temp = Double.parseDouble(display.getText());
operator = 4;
clearFlag = true;
} else if (input.equals("=")) {
double num = Double.parseDouble(display.getText());
switch (operator) {
case 1:
temp += num;
break;
case 2:
temp -= num;
break;
case 3:
temp *= num;
break;
case 4:
temp /= num;
break;
default:
temp = num;
break;
}
display.setText(String.valueOf(temp));
clearFlag = true;
} else if (input.equals("C")) {
display.setText("0");
clearFlag = true;
} else if (input.equals(".")) {
if (clearFlag) {
display.setText("");
clearFlag = false;
}
if (display.getText().indexOf(".") == -1) {
display.setText(display.getText() + ".");
}
} else if (input.equals("Bin")) {
radix = 2;
display.setText("0");
clearFlag = true;
} else if (input.equals("Oct")) {
radix = 8;
display.setText("0");
clearFlag = true;
} else if (input.equals("Dec")) {
radix = 10;
display.setText("0");
clearFlag = true;
}
if (radix != 10) {
try {
int num = Integer.parseInt(display.getText(), radix);
display.setText(Integer.toString(num, radix));
} catch (NumberFormatException ex) {
display.setText("0");
}
}
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
```
在这个代码中,我们定义了一个名为 Calculator 的类,它继承自 JFrame,表示这是一个窗口应用程序。在这个类中,我们定义了各种按钮和文本框,以及一些变量和方法,用于计算和显示计算结果。
在 actionPerformed 方法中,我们处理了各种按钮的事件。当用户点击数字按钮或小数点按钮时,我们将输入添加到文本框中。当用户点击运算符按钮时,我们将当前输入的数字存储在 temp 变量中,并将运算符存储在 operator 变量中。当用户点击等号按钮时,我们根据运算符计算结果,并将结果显示在文本框中。当用户点击清空按钮时,我们将文本框的内容设置为 0。当用户点击进制转换按钮时,我们根据按钮的名称设置不同的进制,并将文本框的内容清空。
在计算结果时,我们需要注意当前的进制,如果当前进制不是 10 进制,我们需要先将输入的字符串转换成对应的整数,然后再将计算结果转换成对应的字符串。我们可以使用 Integer 类的 parseInt 和 toString 方法来实现这个功能。
需要注意的是,我们在代码中使用了 btnBin.setBounds 方法设置按钮的位置和大小,这是一种比较原始的布局方式,不太推荐。在实际开发中,我们可以使用更加灵活和方便的布局管理器来实现界面的布局。
java加减乘除swing
在Java中,Swing是一个强大的图形用户界面(GUI)工具包,它允许开发者创建复杂的应用程序窗口和组件。而关于基本的数学运算(加减乘除),Java支持内置的算术运算符,如`+`、 `-`、 `*` 和 `/`。
例如,如果你想要在Swing应用中显示简单的加法操作,可以这样做:
```java
import javax.swing.JFrame;
import javax.swing.JLabel;
public class SwingCalculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Simple Calculator");
JLabel resultLabel = new JLabel("0");
JButton addButton = new JButton("+");
JButton subtractButton = new JButton("-");
JButton multiplyButton = new JButton("*");
JButton divideButton = new JButton("/");
// 添加事件监听器来处理计算
addButton.addActionListener(e -> updateResult(resultLabel, " + ", resultLabel.getText()));
subtractButton.addActionListener(e -> updateResult(resultLabel, "-", resultLabel.getText()));
multiplyButton.addActionListener(e -> updateResult(resultLabel, "*", resultLabel.getText()));
divideButton.addActionListener(e -> updateResult(resultLabel, "/", resultLabel.getText()));
frame.getContentPane().add(resultLabel);
frame.getContentPane().add(addButton);
// ...其他按钮
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
private static void updateResult(JLabel label, String operator, String currentResult) {
try {
double num1 = Double.parseDouble(currentResult);
double num2 = getNumberFromNextButtonClick();
label.setText(Double.toString(num1 + (operator.equals("/") ? 1 / num2 : num2)));
} catch (NumberFormatException e) {
label.setText("Invalid input");
}
}
// 获取下一个点击按钮产生的数字
private static double getNumberFromNextButtonClick() {
return Double.parseDouble(JOptionPane.showInputDialog(frame, "Enter a number:"));
}
}
}
```
这个例子展示了如何创建一个简单的Swing计算器,每个按钮触发相应的计算。请注意,这只是一个基础示例,实际应用中可能需要更复杂的错误处理和设计。
阅读全文