Die Oberfläche dieses Rechners imitiert den einfachen Rechner von Windows, einschließlich der interaktiven Oberfläche und der Reaktionen auf verschiedene Eingaben. Die Funktionen der Menüleiste und der Speichertasten sind noch nicht implementiert.
Kopieren Sie den Codecode wie folgt:
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.plaf.basic.BasicBorders;
Der öffentliche Klassenrechner erweitert JFrame {
private static final long serialVersionUID = 1L;
Container c = getContentPane();
StringBuilder number1 = new StringBuilder("");//Speichern Sie die erste Zahlenzeichenfolge
StringBuilder number2 = new StringBuilder("");//Speichern Sie die zweite numerische Zeichenfolge
StringBuilder-Operator = new StringBuilder("");//Speicheroperator
StringBuilder result = new StringBuilder("");//Ergebnis der Speicheroperation
JTextField numbershow = new JTextField("0.");//Zahlenanzeigebereich, die anfängliche Anzeige ist „0.“
öffentliche statische void main(String[] args) {//main-Methode
Rechner c1 = neuer Rechner();
c1.setVisible(true);
}
public Calculator() {// Rechnerkonstruktionsmethode
setTitle("Rechner");
setBounds(100, 100, 260, 245);
setResizable(false);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
createMenuBar();//Menüleiste erstellen
createNumberShow();//Erstellen Sie einen Zahlenanzeigebereich
createMemoShow();//Speicheranzeige erstellen
createClearButtons();//Erstellen Sie drei Schaltflächen wie Backspace, CE und C
createButtonArea();//Erstellen Sie einen Zifferntastenbereich
}
private void createMenuBar() {//Methode zum Erstellen einer Menüleiste
JMenuBar-Menüleiste = new JMenuBar();
setJMenuBar(menubar);
JMenu menu1 = new JMenu("Edit");
JMenu menu2 = new JMenu("View");
JMenu menu3 = new JMenu("Hilfe");
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
JMenuItem menu1item1 = new JMenuItem("Copy");
JMenuItem menu1item2 = new JMenuItem("Einfügen");
JMenuItem menu2item1 = new JMenuItem("standard type");
JMenuItem menu2item2 = new JMenuItem("Scientific");
JMenuItem menu2item3 = new JMenuItem("Wissenschaftliche Gruppierung");
JMenuItem menu3item1 = new JMenuItem("Hilfethema");
JMenuItem menu3item2 = new JMenuItem("Über den Rechner");
menu1.add(menu1item1);
menu1.add(menu1item2);
menu2.add(menu2item1);
menu2.add(menu2item2);
menu2.add(menu2item3);
menu3.add(menu3item1);
menu3.add(menu3item2);
}
private void createNumberShow() {//Methode zum Erstellen eines Zahlenanzeigebereichs
numbershow.setHorizontalAlignment(JTextField.RIGHT);
numbershow.setBounds(5, 0, 245, 22);
numbershow.setEnabled(false);
numbershow.setDisabledTextColor(Color.BLACK);
c.add(numbershow);
}
private void createMemoShow() {//Methode zum Erstellen einer Speicheranzeige
JTextField memoshow = new JTextField();
memoshow.setEditable(false);
memoshow.setBounds(10, 30, 28, 22);
memoshow.setBorder(new BasicBorders.FieldBorder(Color.black,
Farbe.schwarz, Farbe.weiß, Farbe.weiß));
c.add(memoshow);
}
private void createClearButtons() {// Methode zum Erstellen von drei Schaltflächen wie Backspace, CE und C
JButton[] clearbutton = new JButton[3];
String[] clearbuttontext = { "Backspace", "CE", "C" };
for (int i = 0; i < 3; i++) {
clearbutton[i] = new JButton();
clearbutton[i].setText(clearbuttontext[i]);
clearbutton[i].setHorizontalAlignment(SwingConstants.CENTER);
clearbutton[i].setMargin(new Insets(0, 0, 0, 0));
clearbutton[i].setFont(new java.awt.Font("Arial", 0, 9));
clearbutton[i].setForeground(Color.blue);
clearbutton[i].setBounds(48 + i * 68, 30, 63, 22);
clearbutton[i].setForeground(Color.red);
c.add(clearbutton[i]);
}
clearbutton[0].addActionListener(new ActionListener() {//Fügen Sie einen Listener für die Rücktaste hinzu
@Override
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {// Wenn keine Eingabe erfolgt
showNumber(numbershow, number1);//show number1
} else if (operator.toString().equals("")) {// Wenn nur Nummer1 eingegeben wird
number1.deleteCharAt(number1.toString().length() - 1); // Das letzte Zeichen von Nummer1 entfernen
showNumber(numbershow, number1);//show number1
} else if (number2.toString().equals("")) {// Wenn nur Zahl1 und Operator eingegeben werden
showNumber(numbershow, number1);//Keine Verarbeitung, zeige Nummer1 an
} else {// Wenn Nummer1, Operator, Nummer2 eingegeben werden
number2.deleteCharAt(number2.toString().length() - 1); // Das letzte Zeichen von Nummer2 entfernen
showNumber(numbershow, number2);//show number2
}
}
});
clearbutton[1].addActionListener(new ActionListener() {//Fügen Sie einen Listener für die CE-Schaltfläche hinzu
@Override
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {// Wenn keine Eingabe erfolgt
showNumber(numbershow, number1);//show number1
} else if (operator.toString().equals("")) {// Wenn nur Nummer1 eingegeben wird
number1.setLength(0);//Nummer1 löschen
showNumber(numbershow, number1);//show number1
} else if (number2.toString().equals("")) {// Wenn Zahl1 und Operator eingegeben werden
showNumber(numbershow, number2);//Keine Verarbeitung, zeige number2 an
} else {// Wenn Nummer1, Operator, Nummer2 eingegeben werden
number2.setLength(0);//Nummer2 löschen
showNumber(numbershow, number2);//show number2
}
}
});
clearbutton[2].addActionListener(new ActionListener() {//Fügen Sie einen Listener für die C-Schaltfläche hinzu
@Override
public void actionPerformed(ActionEvent e) {// Gesamten Speicher löschen
number1.setLength(0);
number2.setLength(0);
Operator.setLength(0);
numbershow.setText("0.");
result.setLength(0);
}
});
}
private void createButtonArea() {//Methode zum Erstellen eines digitalen Schaltflächenbereichs
JPanel ButtonArea = new JPanel();
ButtonArea.setBounds(5, 55, 245, 125);
ButtonArea.setLayout(new GridLayout(4, 6, 5, 5));
c.add(ButtonArea);
JButton[] numberbutton = new JButton[24];
String[] numberbuttontext = { "MC", "7", "8", "9", "/", "sqrt", "MR",
„4“, „5“, „6“, „*“, „%“, „MS“, „1“, „2“, „3“, „-“, „1/X“, „M+“,
„0“, „+/-“, „.“, „+“, „=" };
for (int i = 0; i < 24; i++) {// Verwenden Sie eine Schleife, um diesen 24 Schaltflächen Beschriftungen hinzuzufügen
numberbutton[i] = new JButton(numberbuttontext[i]);
ButtonArea.add(numberbutton[i]);
if (i % 6 == 0 || i % 6 == 4 || i == 23) {// Operator-Taste ist auf Rot gesetzt
numberbutton[i].setHorizontalAlignment(SwingConstants.CENTER);
numberbutton[i].setMargin(new Insets(0, 0, 0, 0));
numberbutton[i].setFont(new java.awt.Font("Arial", 0, 9));
numberbutton[i].setForeground(Color.red);
} else {//Andere Einstellungen sind blau
numberbutton[i].setHorizontalAlignment(SwingConstants.CENTER);
numberbutton[i].setMargin(new Insets(0, 0, 0, 0));
numberbutton[i].setFont(new java.awt.Font("Arial", 0, 9));
numberbutton[i].setForeground(Color.blue);
}
}
int[] zahlen = { 19, 13, 14, 15, 7, 8, 9, 1, 2, 3 };//Die Zahlen in diesem Array repräsentieren jeweils die Seriennummern der Zahlen 0-9 im Numberbuttontext-Array
for (int i = 0; i <= 9; i++) { // Verwenden Sie eine Schleife, um Listener für die zehn Zifferntasten 0-9 hinzuzufügen
final String str = String.valueOf(i);
numberbutton[numbers[i]].addActionListener(new ActionListener() {//Listener für die Schaltflächen 0–9 hinzufügen
@Override
public void actionPerformed(ActionEvent e) {
if (operator.toString().equals("")) {// Bevor der Operator eingegeben wird
add(number1, str); // Nur den Wert von number1 festlegen
showNumber(numbershow, number1);//Nur den Wert von number1 anzeigen
} else {// Nach Eingabe des Operators
add(number2, str);//Nur den Wert von number2 festlegen
showNumber(numbershow, number2);//Nur den Wert von number2 anzeigen
}
}
});
}
numberbutton[20].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „+/-“.
@Override
public void actionPerformed(ActionEvent e) {
if (operator.toString().equals("")) {// Bevor der Operator eingegeben wird
add(number1, "+/-");// Setze nur den Wert von number1
showNumber(numbershow, number1);//Nur den Wert von number1 anzeigen
} else {// Nach Eingabe des Operators
add(number2, "+/-");// Setze nur den Wert von number2
showNumber(numbershow, number2);//Nur den Wert von number2 anzeigen
}
}
});
numberbutton[21].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „.“
@Override
public void actionPerformed(ActionEvent e) {
if (operator.toString().equals("")) {// Vor der Eingabe von Operator wird nur der Wert von Zahl1 angezeigt
add(Nummer1, „.“);
showNumber(numbershow, number1);
} else {// Nach Eingabe des Operators wird nur der Wert von Zahl2 angezeigt
add(Nummer2, „.“);
showNumber(numbershow, number2);
}
}
});
numberbutton[22].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „+“.
@Override
public void actionPerformed(ActionEvent e) {
Operator.setLength(0);
Operator.append("+");
}
});
numberbutton[16].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „-“.
@Override
public void actionPerformed(ActionEvent e) {
Operator.setLength(0);
Operator.append("-");
}
});
numberbutton[10].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „*“.
@Override
public void actionPerformed(ActionEvent e) {
Operator.setLength(0);
Operator.append("*");
}
});
numberbutton[4].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „/“.
@Override
public void actionPerformed(ActionEvent e) {
Operator.setLength(0);
Operator.append("/");
}
});
numberbutton[23].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „="
@Override
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {// Wenn Nummer1 leer ist
showNumber(numbershow, number1);
} else if (operator.toString().equals("")) {// Wenn Nummer1 nicht leer ist und der Operator leer ist
showNumber(numbershow, number1);
} else if (number2.toString().equals("")) {// Wenn Nummer1 und Operator nicht leer sind, Nummer2 jedoch leer ist
switch (operator.toString()) {
Groß-/Kleinschreibung ("+"): {
number2.append(number1.toString());
double d = Double.parseDouble(number1
.toString())
+ Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
Fall ("-"): {
number2.append(number1.toString());
double d = Double.parseDouble(number1
.toString())
- Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
Fall ("*"): {
number2.append(number1.toString());
double d = Double.parseDouble(number1
.toString())
* Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
Fall ("/"): {
number2.append(number1.toString());
double d = Double.parseDouble(number1
.toString())
/ Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
}
} else {// Wenn Nummer1, Operator und Nummer2 nicht leer sind
switch (operator.toString()) {
Groß-/Kleinschreibung („+“): {
double d = Double.parseDouble(number1
.toString())
+ Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
Fall ("-"): {
double d = Double.parseDouble(number1
.toString())
- Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
Fall ("*"): {
double d = Double.parseDouble(number1
.toString())
* Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
Fall ("/"): {
double d = Double.parseDouble(number1
.toString())
/ Double.parseDouble(number2.toString());
result.setLength(0);
result.append(d);
showNumber(numbershow, result);
number1.setLength(0);
number1.append(d);
}
brechen;
}
}
}
});
numberbutton[17].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „1/x“.
@Override
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {//Wenn Nummer1 nicht eingegeben wird
numbershow.setText("Der Divisor darf nicht Null sein");
} else if (operator.toString().equals("")) {//number1 wurde eingegeben, aber der Operator wurde nicht eingegeben
if (Double.parseDouble(number1.toString()) == 0) {// Wenn der Wert von number1 Null ist
numbershow.setText("Der Divisor darf nicht Null sein");
} else {// Wenn der Wert von Nummer1 nicht Null ist
double d = 1 / (Double.parseDouble(number1
.toString()));
number1.setLength(0);
number1.append(d);//Öffnen und speichern Sie den Wert von number1
showNumber(numbershow, number1);
}
} else if (number2.toString().equals("")) {//number1 und der Operator werden eingegeben, aber number2 wird nicht eingegeben
double d = 1 / (Double.parseDouble(number1
.toString()));
number2.append(d);//Öffnen und speichern Sie den Wert von number1
showNumber(numbershow, number2);
} else {//Geben Sie Nummer1, Operator, Nummer2 ein
double d = 1 / (Double.parseDouble(number2
.toString()));
number2.setLength(0);
number2.append(d);//Öffnen und speichern Sie den Wert von number2
showNumber(numbershow, number2);
}
}
});
numberbutton[11].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „%“.
@Override
public void actionPerformed(ActionEvent e) {
// Vorübergehend vakant
}
});
numberbutton[5].addActionListener(new ActionListener() { //Hinzufügen eines Listeners für die Schaltfläche „sqrt“.
@Override
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {//Wenn Nummer1 nicht eingegeben wird
showNumber(numbershow, number1);
} else if (operator.toString().equals("")) {//number1 wurde eingegeben, aber der Operator wurde nicht eingegeben
if (Double.parseDouble(number1.toString()) < 0) {// number1 ist kleiner als 0
numbershow.setText("Funktionseingabe ist ungültig");
} else {// Zahl1 ist größer als 0
double d = Math.sqrt(Double.parseDouble(number1
.toString()));
number1.setLength(0);
number1.append(d);//Öffnen und speichern Sie den Wert von number1
showNumber(numbershow, number1);
}
} else if (number2.toString().equals("")) {//number1 und der Operator werden eingegeben, aber number2 wird nicht eingegeben
double d = Math.sqrt(Double.parseDouble(number1
.toString()));
number2.append(d);//Öffnen und speichern Sie den Wert von number1
showNumber(numbershow, number2);
} else {//Geben Sie Nummer1, Operator, Nummer2 ein
double d = Math.sqrt(Double.parseDouble(number2
.toString()));
number2.setLength(0);
number2.append(d);//Öffnen und speichern Sie den Wert von number2
showNumber(numbershow, number2);
}
}
});
}
public void add(StringBuilder s1, String s2) {// Definieren Sie die Methode zum Ändern der digitalen Zeichenfolge nach der Schaltflächeneingabe
if (s2.equals("+/-")) {// Definieren Sie die Änderung der digitalen Zeichenfolge nach der Eingabe von „+/-“
if (s1.toString().equals("") || s1.toString().equals("0")) {// Wenn die numerische Zeichenfolge leer oder 0 ist, erfolgt keine Änderung
s1.append("");
} else {// Wenn die numerische Zeichenfolge weder leer noch 0 ist, fügen Sie das Zeichen „-“ vor der numerischen Zeichenfolge hinzu oder löschen Sie es
if (s1.toString().startsWith("-")) {
s1.deleteCharAt(0);
} anders {
s1.insert(0, "-");
}
}
}
if (s2.equals(".")) {// Definieren Sie die Änderung der digitalen Zeichenfolge nach der Eingabe von „.“
if (s1.toString().indexOf(".") == -1) {// Finden Sie heraus, ob die Zahlenzeichenfolge das Zeichen „.“ enthält. Wenn nicht, führen Sie den folgenden Code aus
if (s1.toString().equals("")) {// Wenn die numerische Zeichenfolge leer ist, setzen Sie die numerische Zeichenfolge auf „0“.
s1.setLength(0);
s1.append("0.");
} anders {
s1.append(".");
}
} else {// Wenn dies der Fall ist, erfolgt keine Änderung
s1.append("");
}
}
if (s2.equals("0")) {// Definieren Sie die Änderung der digitalen Zeichenfolge nach der Eingabe von „0“
if (s1.toString().equals("0")) {// Wenn die Zahlenzeichenfolge „0“ ist, erfolgt keine Änderung
s1.append("");
} else {// Wenn die Zahlenzeichenfolge „0“ ist, fügen Sie „0“ nach der Zeichenfolge hinzu
s1.append("0");
}
}
for (int i = 1; i < 10; i++) {// Definieren Sie durch die Schleife die Änderungen in der digitalen Zeichenfolge nach der Eingabe von 1-9
String str = String.valueOf(i);
if (s2.equals(str)) {// Definieren Sie die Änderung der digitalen Zeichenfolge nach der Eingabe von 1-9
if (s1.toString().equals("0")) {
s1.setLength(0);
s1.append(str);
} anders
s1.append(str);
}
}
}
public void showNumber(JTextField j, StringBuilder s) {//Methode zum Definieren, wie numerische Zeichenfolgen im Zahlenanzeigebereich angezeigt werden
if (s.toString().equals("") == true || s.toString().equals("0") == true) {
j.setText("0.");
} else if (s.toString().indexOf(".") == -1) {
j.setText(s.toString() + „.“);
} anders {
j.setText(s.toString());
}
}
}