frame.getContentPane().add(new Operator());frame.getContentPane().add(new Operator());
时间: 2024-02-18 19:03:23 浏览: 102
这段代码是将 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 方法设置按钮的位置和大小,这是一种比较原始的布局方式,不太推荐。在实际开发中,我们可以使用更加灵活和方便的布局管理器来实现界面的布局。
3.编写程序实现一个简单计算器的基本功能,具体可以模仿Windows附件中的计算器或模拟常见的实物计算器。使用java
以下是一个简单的基于Java Swing的计算器程序实现:
```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 JPanel panel;
private JButton[] buttons;
private JTextField display;
private String[] buttonLabels = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"};
private double result = 0;
private String operator = "";
private boolean start = true;
public Calculator() {
super("Calculator");
setSize(300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
panel = new JPanel();
panel.setLayout(new GridLayout(4, 4));
buttons = new JButton[buttonLabels.length];
for (int i = 0; i < buttonLabels.length; i++) {
buttons[i] = new JButton(buttonLabels[i]);
buttons[i].addActionListener(this);
panel.add(buttons[i]);
}
display = new JTextField();
display.setEditable(false);
display.setHorizontalAlignment(JTextField.RIGHT);
getContentPane().add(display, BorderLayout.NORTH);
getContentPane().add(panel, BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if (command.matches("[0-9\\.]")) {
if (start) {
display.setText(command);
start = false;
} else {
display.setText(display.getText() + command);
}
} else if (command.matches("[+\\-*/=]")) {
if (operator.equals("")) {
result = Double.parseDouble(display.getText());
} else if (operator.equals("+")) {
result += Double.parseDouble(display.getText());
} else if (operator.equals("-")) {
result -= Double.parseDouble(display.getText());
} else if (operator.equals("*")) {
result *= Double.parseDouble(display.getText());
} else if (operator.equals("/")) {
result /= Double.parseDouble(display.getText());
}
display.setText("" + result);
operator = command;
start = true;
}
}
public static void main(String[] args) {
new Calculator();
}
}
```
该程序使用GridLayout布局管理器来排列按钮,并实现了ActionListener接口以处理按钮点击事件。在actionPerformed方法中,程序先判断点击的按钮是数字还是运算符,然后根据不同的运算符来计算结果,并将结果显示在文本框中。
阅读全文