У меня проблема: я создал небольшой графический интерфейс, который должен быть калькулятором.
Я хочу, чтобы, если пользователь вводит в текстовое поле A число, а в текстовое поле B другое, должен быть прослушиватель, который, если пользователь вводит оператор (+ - / *), он должен выполнить операцию с обоими числами, теперь у меня проблема, оператор будет показан в текстовом поле, что он не должен делать, как я могу это исправить? .
код ниже:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Taschenrechner extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textB;
private JTextField textA;
private JTextField textErgebnis;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Taschenrechner frame = new Taschenrechner();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Taschenrechner() {
setTitle("Taschenrechner");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textB = new JTextField();
textB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loeschenString(textB);
}
});
textB.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent a) {
if(a.getKeyChar() == '+') {
addieren();
a.consume(); // Prevent the symbol from appearing in the text field
} else if(a.getKeyChar() == '-') {
subtrahieren();
a.consume();
} else if(a.getKeyChar() == '*') {
multiplizieren();
a.consume();
} else if(a.getKeyChar() == '/') {
dividieren();
a.consume();
}
}
});
textB.setText("0");
textB.setBounds(233, 40, 179, 20);
contentPane.add(textB);
textB.setColumns(10);
JLabel lblZahlA = new JLabel("Zahl A");
lblZahlA.setBounds(93, 15, 46, 14);
contentPane.add(lblZahlA);
JLabel lblZahlB = new JLabel("Zahl B");
lblZahlB.setBounds(291, 15, 46, 14);
contentPane.add(lblZahlB);
JButton btnSubtstraktion = new JButton("A - B");
btnSubtstraktion.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
subtrahieren();
}
});
btnSubtstraktion.setBounds(233, 94, 179, 23);
contentPane.add(btnSubtstraktion);
textA = new JTextField() ;
textA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loeschenString(textA);
}
});
textA.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent a) {
if(a.getKeyChar() == '+') {
addieren();
a.consume();
} else if(a.getKeyChar() == '-') {
subtrahieren();
a.consume();
} else if(a.getKeyChar() == '*') {
multiplizieren();
a.consume();
} else if(a.getKeyChar() == '/') {
dividieren();
a.consume();
}
}
});
textA.setText("0");
textA.setColumns(10);
textA.setBounds(20, 40, 179, 20);
contentPane.add(textA);
JButton btnAddition = new JButton("A + B");
btnAddition.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addieren();
}
});
btnAddition.setBounds(20, 94, 179, 23);
contentPane.add(btnAddition);
JButton btnMultiplikation = new JButton("A * B");
btnMultiplikation.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
multiplizieren();
}
});
btnMultiplikation.setBounds(20, 159, 179, 23);
contentPane.add(btnMultiplikation);
JButton btnDivision = new JButton("A / B");
btnDivision.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dividieren();
}
});
btnDivision.setBounds(233, 159, 179, 23);
contentPane.add(btnDivision);
JLabel lblErgebnis = new JLabel("Ergebnis");
lblErgebnis.setBounds(171, 270, 71, 14);
contentPane.add(lblErgebnis);
textErgebnis = new JTextField();
textErgebnis.setEditable(false);
textErgebnis.setColumns(10);
textErgebnis.setBounds(122, 310, 179, 20);
contentPane.add(textErgebnis);
}
private void addieren() {
int a = Integer.parseInt(textA.getText());
int b = Integer.parseInt(textB.getText());
int addieren = a+b;
textErgebnis.setText(""+addieren);
};
private void subtrahieren() {
int a = Integer.parseInt(textA.getText());
int b = Integer.parseInt(textB.getText());
int Subtrahieren = a-b;
textErgebnis.setText(""+Subtrahieren);
};
private void multiplizieren() {
int a = Integer.parseInt(textA.getText());
int b = Integer.parseInt(textB.getText());
int Multiplizieren = a*b;
textErgebnis.setText(""+Multiplizieren);
};
private void dividieren() {
double a = Double.parseDouble(textA.getText());
double b = Double.parseDouble(textB.getText());
double Dividieren = a/b;
textErgebnis.setText(""+Dividieren);
};
private void loeschenString(JTextField textField) {
String eingabe = textField.getText();
if (eingabe.endsWith("+") || eingabe.endsWith("-") || eingabe.endsWith("*") || eingabe.endsWith("/")) {
textField.setText(eingabe.substring(0, eingabe.length() - 1));
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... java-swing
Ключевой прослушиватель в Java Swing ⇐ JAVA
Программисты JAVA общаются здесь
1728456686
Anonymous
У меня проблема: я создал небольшой графический интерфейс, который должен быть калькулятором.
Я хочу, чтобы, если пользователь вводит в текстовое поле A число, а в текстовое поле B другое, должен быть прослушиватель, который, если пользователь вводит оператор (+ - / *), он должен выполнить операцию с обоими числами, теперь у меня проблема, оператор будет показан в текстовом поле, что он не должен делать, как я могу это исправить? .
код ниже:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Taschenrechner extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textB;
private JTextField textA;
private JTextField textErgebnis;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Taschenrechner frame = new Taschenrechner();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Taschenrechner() {
setTitle("Taschenrechner");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textB = new JTextField();
textB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loeschenString(textB);
}
});
textB.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent a) {
if(a.getKeyChar() == '+') {
addieren();
a.consume(); // Prevent the symbol from appearing in the text field
} else if(a.getKeyChar() == '-') {
subtrahieren();
a.consume();
} else if(a.getKeyChar() == '*') {
multiplizieren();
a.consume();
} else if(a.getKeyChar() == '/') {
dividieren();
a.consume();
}
}
});
textB.setText("0");
textB.setBounds(233, 40, 179, 20);
contentPane.add(textB);
textB.setColumns(10);
JLabel lblZahlA = new JLabel("Zahl A");
lblZahlA.setBounds(93, 15, 46, 14);
contentPane.add(lblZahlA);
JLabel lblZahlB = new JLabel("Zahl B");
lblZahlB.setBounds(291, 15, 46, 14);
contentPane.add(lblZahlB);
JButton btnSubtstraktion = new JButton("A - B");
btnSubtstraktion.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
subtrahieren();
}
});
btnSubtstraktion.setBounds(233, 94, 179, 23);
contentPane.add(btnSubtstraktion);
textA = new JTextField() ;
textA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loeschenString(textA);
}
});
textA.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent a) {
if(a.getKeyChar() == '+') {
addieren();
a.consume();
} else if(a.getKeyChar() == '-') {
subtrahieren();
a.consume();
} else if(a.getKeyChar() == '*') {
multiplizieren();
a.consume();
} else if(a.getKeyChar() == '/') {
dividieren();
a.consume();
}
}
});
textA.setText("0");
textA.setColumns(10);
textA.setBounds(20, 40, 179, 20);
contentPane.add(textA);
JButton btnAddition = new JButton("A + B");
btnAddition.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addieren();
}
});
btnAddition.setBounds(20, 94, 179, 23);
contentPane.add(btnAddition);
JButton btnMultiplikation = new JButton("A * B");
btnMultiplikation.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
multiplizieren();
}
});
btnMultiplikation.setBounds(20, 159, 179, 23);
contentPane.add(btnMultiplikation);
JButton btnDivision = new JButton("A / B");
btnDivision.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dividieren();
}
});
btnDivision.setBounds(233, 159, 179, 23);
contentPane.add(btnDivision);
JLabel lblErgebnis = new JLabel("Ergebnis");
lblErgebnis.setBounds(171, 270, 71, 14);
contentPane.add(lblErgebnis);
textErgebnis = new JTextField();
textErgebnis.setEditable(false);
textErgebnis.setColumns(10);
textErgebnis.setBounds(122, 310, 179, 20);
contentPane.add(textErgebnis);
}
private void addieren() {
int a = Integer.parseInt(textA.getText());
int b = Integer.parseInt(textB.getText());
int addieren = a+b;
textErgebnis.setText(""+addieren);
};
private void subtrahieren() {
int a = Integer.parseInt(textA.getText());
int b = Integer.parseInt(textB.getText());
int Subtrahieren = a-b;
textErgebnis.setText(""+Subtrahieren);
};
private void multiplizieren() {
int a = Integer.parseInt(textA.getText());
int b = Integer.parseInt(textB.getText());
int Multiplizieren = a*b;
textErgebnis.setText(""+Multiplizieren);
};
private void dividieren() {
double a = Double.parseDouble(textA.getText());
double b = Double.parseDouble(textB.getText());
double Dividieren = a/b;
textErgebnis.setText(""+Dividieren);
};
private void loeschenString(JTextField textField) {
String eingabe = textField.getText();
if (eingabe.endsWith("+") || eingabe.endsWith("-") || eingabe.endsWith("*") || eingabe.endsWith("/")) {
textField.setText(eingabe.substring(0, eingabe.length() - 1));
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79068917/key-listener-in-java-swing[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия