A interface desta calculadora imita a calculadora simples que vem com o Windows, incluindo a interface interativa e respostas a várias entradas. As funções da barra de menu e dos botões de memória ainda não foram implementadas.
Copie o código do código da seguinte forma:
importar java.awt.Color;
importar java.awt.Container;
importar java.awt.GridLayout;
importar java.awt.Insets;
importar java.awt.event.ActionEvent;
importar java.awt.event.ActionListener;
importar javax.swing.JFrame;
importar javax.swing.JButton;
importar javax.swing.JMenu;
importar javax.swing.JMenuBar;
importar javax.swing.JMenuItem;
importar javax.swing.JPanel;
importar javax.swing.JTextField;
importar javax.swing.SwingConstants;
importar javax.swing.plaf.basic.BasicBorders;
calculadora de classe pública estende JFrame {
privado estático final longo serialVersionUID = 1L;
Contêiner c = getContentPane();
StringBuilder number1 = new StringBuilder("");//Armazena a primeira string numérica
StringBuilder number2 = new StringBuilder("");//Armazena a segunda string numérica
Operador StringBuilder = new StringBuilder("");//Operador de armazenamento
Resultado StringBuilder = new StringBuilder("");//Resultado da operação de armazenamento
JTextField numbershow = new JTextField("0.");//Área de exibição de número, a exibição inicial é "0."
public static void main(String[] args) {//método principal
Calculadora c1 = nova Calculadora();
c1.setVisible(verdadeiro);
}
public Calculator() {// Método de construção da calculadora
setTitle("Calculadora");
setBounds(100, 100, 260, 245);
setResizable(falso);
setLayout(nulo);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
createMenuBar();//cria barra de menu
createNumberShow(); // Cria uma área de exibição de números
createMemoShow();//cria display de memória
createClearButtons();//Cria três botões como Backspace, CE e C
createButtonArea(); // Cria uma área de botão numérico
}
private void createMenuBar() {//Método para criar a barra de menu
Barra de menu JMenuBar = new JMenuBar();
setJMenuBar(barra de menu);
JMenu menu1 = novo JMenu("Editar");
JMenu menu2 = new JMenu("Visualizar");
JMenu menu3 = new JMenu("Ajuda");
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
JMenuItem menu1item1 = new JMenuItem("Copiar");
JMenuItem menu1item2 = new JMenuItem("Colar");
JMenuItem menu2item1 = new JMenuItem("tipo padrão");
JMenuItem menu2item2 = new JMenuItem("Científico");
JMenuItem menu2item3 = new JMenuItem("Agrupamento Científico");
JMenuItem menu3item1 = new JMenuItem("Tópico de Ajuda");
JMenuItem menu3item2 = new JMenuItem("Sobre a Calculadora");
menu1.add(menu1item1);
menu1.add(menu1item2);
menu2.add(menu2item1);
menu2.add(menu2item2);
menu2.add(menu2item3);
menu3.add(menu3item1);
menu3.add(menu3item2);
}
private void createNumberShow() {//Método para criar uma área de exibição de números
numbershow.setHorizontalAlignment(JTextField.RIGHT);
numbershow.setBounds(5, 0, 245, 22);
númeroshow.setEnabled(falso);
numbershow.setDisabledTextColor(Color.BLACK);
c.add(númeromostrar);
}
private void createMemoShow() {//Método para criar exibição de memória
JTextField memosshow = new JTextField();
memosshow.setEditable(falso);
memosshow.setBounds(10, 30, 28, 22);
memosshow.setBorder(new BasicBorders.FieldBorder(Color.preto,
Cor.preto, Cor.branco, Cor.branco));
c.add(memorando);
}
private void createClearButtons() {// Método para criar três botões como Backspace, CE e 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() {//Adicione um ouvinte para o botão Backspace
@Substituir
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {// Se nenhuma entrada for feita
showNumber(númeroshow, numero1); //mostra numero1
} else if (operator.toString().equals("")) {// Se apenas o número1 for inserido
number1.deleteCharAt(number1.toString().length() - 1); // Remove o último caractere de number1);
showNumber(númeroshow, numero1); //mostra numero1
} else if (number2.toString().equals("")) {// Se apenas o número1 e o operador forem inseridos
showNumber(numbershow, number1); //Sem processamento, exibe number1
} else {// Se número1, operador, número2 forem inseridos
number2.deleteCharAt(number2.toString().length() - 1); // Remove o último caractere de number2);
showNumber(númeroshow, numero2); //mostra numero2
}
}
});
clearbutton[1].addActionListener(new ActionListener() {//Adiciona um ouvinte para o botão CE
@Substituir
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {// Se nenhuma entrada for feita
showNumber(númeroshow, numero1); //mostra numero1
} else if (operator.toString().equals("")) {// Se apenas o número1 for inserido
number1.setLength(0); //Limpa número1
showNumber(númeroshow, numero1); //mostra numero1
} else if (number2.toString().equals("")) {// Se o número1 e o operador forem inseridos
showNumber(numbershow, number2); //Sem processamento, exibe number2
} else {// Se número1, operador, número2 forem inseridos
number2.setLength(0);//Limpa número2
showNumber(númeroshow, numero2); //mostra numero2
}
}
});
clearbutton[2].addActionListener(new ActionListener() {//Adicione um ouvinte para o botão C
@Substituir
public void actionPerformed(ActionEvent e) {//Limpa todo o armazenamento
número1.setLength(0);
número2.setLength(0);
operador.setLength(0);
númeroshow.setText("0.");
resultado.setLength(0);
}
});
}
private void createButtonArea() {//Método para criar área de botão digital
JPanel ButtonArea = new JPanel();
ButtonArea.setBounds(5, 55, 245, 125);
ButtonArea.setLayout(novo GridLayout(4, 6, 5, 5));
c.add(ButtonArea);
JButton[] botão numérico = new JButton[24];
String[] númerobuttontext = { "MC", "7", "8", "9", "/", "sqrt", "MR",
"4", "5", "6", "*", "%", "MS", "1", "2", "3", "-", "1/X", "M+",
"0", "+/-", ".", "+", "=" };
for (int i = 0; i < 24; i++) {// Use um loop para adicionar rótulos a esses 24 botões
botãonúmero[i] = new JButton(botãonúmerotexto[i]);
ButtonArea.add(botãonúmero[i]);
if (i % 6 == 0 || i % 6 == 4 || i == 23) {// O botão do operador está definido como vermelho
botão numérico[i].setHorizontalAlignment(SwingConstants.CENTER);
botão numérico[i].setMargin(new Insets(0, 0, 0, 0));
botão numérico[i].setFont(new java.awt.Font("Arial", 0, 9));
botão numérico[i].setForeground(Color.red);
} else {//Outras configurações são azuis
botão numérico[i].setHorizontalAlignment(SwingConstants.CENTER);
botão numérico[i].setMargin(new Insets(0, 0, 0, 0));
botão numérico[i].setFont(new java.awt.Font("Arial", 0, 9));
botão numérico[i].setForeground(Color.blue);
}
}
int[] numbers = { 19, 13, 14, 15, 7, 8, 9, 1, 2, 3 };//Os números nesta matriz representam respectivamente os números de série dos números 0-9 na matriz numberbuttontext
for (int i = 0; i <= 9; i++) { // Use um loop para adicionar ouvintes para os dez botões numéricos 0-9
String final str = String.valueOf(i);
numberbutton[numbers[i]].addActionListener(new ActionListener() {//Adicionar ouvintes para os botões 0-9
@Substituir
public void actionPerformed(ActionEvent e) {
if (operator.toString().equals("")) {// Antes do operador ser inserido
add(number1, str); // Define apenas o valor de number1
showNumber(numbershow, number1); //Exibe apenas o valor de number1
} else {// Depois de inserir o operador
add(número2, str); //Define apenas o valor de número2
showNumber(numbershow, number2); //Exibe apenas o valor de number2
}
}
});
}
numberbutton[20].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "+/-"
@Substituir
public void actionPerformed(ActionEvent e) {
if (operator.toString().equals("")) {// Antes do operador ser inserido
add(número1, "+/-"); // Define apenas o valor de número1
showNumber(numbershow, number1); //Exibe apenas o valor de number1
} else {// Depois de inserir o operador
add(número2, "+/-"); // Define apenas o valor de número2
showNumber(numbershow, number2); //Exibe apenas o valor de number2
}
}
});
numberbutton[21].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "."
@Substituir
public void actionPerformed(ActionEvent e) {
if (operator.toString().equals("")) {// Antes de inserir o operador, apenas o valor de number1 é exibido
adicionar(número1, ".");
mostrarNúmero(númeromostrar, número1);
} else {// Depois de inserir o operador, apenas o valor de number2 é exibido
adicionar(número2, ".");
mostrarNúmero(númeromostrar, número2);
}
}
});
numberbutton[22].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "+"
@Substituir
public void actionPerformed(ActionEvent e) {
operador.setLength(0);
operador.append("+");
}
});
numberbutton[16].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "-"
@Substituir
public void actionPerformed(ActionEvent e) {
operador.setLength(0);
operador.append("-");
}
});
numberbutton[10].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "*"
@Substituir
public void actionPerformed(ActionEvent e) {
operador.setLength(0);
operador.append("*");
}
});
numberbutton[4].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "/"
@Substituir
public void actionPerformed(ActionEvent e) {
operador.setLength(0);
operador.append("/");
}
});
numberbutton[23].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "="
@Substituir
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {// Quando number1 está vazio
mostrarNúmero(númeromostrar, número1);
} else if (operator.toString().equals("")) {// Quando o número1 não está vazio e o operador está vazio
mostrarNúmero(númeromostrar, número1);
} else if (number2.toString().equals("")) {// Quando o número1 e o operador não estão vazios, mas o número2 está vazio
mudar (operador.toString()) {
caso ("+"): {
número2.append(número1.toString());
duplo d = Double.parseDouble (número1
.toString())
+ Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
caso ("-"): {
número2.append(número1.toString());
duplo d = Double.parseDouble (número1
.toString())
- Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
caso ("*"): {
número2.append(número1.toString());
duplo d = Double.parseDouble (número1
.toString())
* Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
caso ("/"): {
número2.append(número1.toString());
duplo d = Double.parseDouble (número1
.toString())
/ Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
}
} else {// Quando número1, operador e número2 não estão vazios
mudar (operador.toString()) {
caso ("+"): {
duplo d = Double.parseDouble (número1
.toString())
+ Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
caso ("-"): {
duplo d = Double.parseDouble (número1
.toString())
- Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
caso ("*"): {
duplo d = Double.parseDouble (número1
.toString())
* Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
caso ("/"): {
duplo d = Double.parseDouble (número1
.toString())
/ Double.parseDouble(número2.toString());
resultado.setLength(0);
resultado.append(d);
showNumber(númeromostrar,resultado);
número1.setLength(0);
número1.append(d);
}
quebrar;
}
}
}
});
numberbutton[17].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "1/x"
@Substituir
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {//Quando o número1 não é inserido
numbershow.setText("O divisor não pode ser zero");
} else if (operator.toString().equals("")) {//número1 foi inserido, mas o operador não foi inserido
if (Double.parseDouble(number1.toString()) == 0) {// Se o valor de number1 for zero
numbershow.setText("O divisor não pode ser zero");
} else {// Se o valor de number1 não for zero
duplo d = 1 / (Double.parseDouble(número1
.toString()));
número1.setLength(0);
number1.append(d); //Abre e armazena o valor de number1
mostrarNúmero(númeromostrar, número1);
}
} else if (number2.toString().equals("")) {//número1 e operador são inseridos, mas número2 não é inserido
duplo d = 1 / (Double.parseDouble(número1
.toString()));
number2.append(d); //Abre e armazena o valor de number1
mostrarNúmero(númeromostrar, número2);
} else {//Insira número1, operador, número2
duplo d = 1 / (Double.parseDouble(número2
.toString()));
número2.setLength(0);
number2.append(d); //Abre e armazena o valor de number2
mostrarNúmero(númeromostrar, número2);
}
}
});
numberbutton[11].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "%"
@Substituir
public void actionPerformed(ActionEvent e) {
// Temporariamente vago
}
});
numberbutton[5].addActionListener(new ActionListener() { //Adiciona um ouvinte para o botão "sqrt"
@Substituir
public void actionPerformed(ActionEvent e) {
if (number1.toString().equals("")) {//Quando o número1 não é inserido
mostrarNúmero(númeromostrar, número1);
} else if (operator.toString().equals("")) {//número1 foi inserido, mas o operador não foi inserido
if (Double.parseDouble(number1.toString()) < 0) {// number1 é menor que 0
numbershow.setText("A entrada da função é inválida");
} else {// número1 é maior que 0
duplo d = Math.sqrt(Double.parseDouble(número1
.toString()));
número1.setLength(0);
number1.append(d); //Abre e armazena o valor de number1
mostrarNúmero(númeromostrar, número1);
}
} else if (number2.toString().equals("")) {//número1 e operador são inseridos, mas número2 não é inserido
duplo d = Math.sqrt(Double.parseDouble(número1
.toString()));
number2.append(d); //Abre e armazena o valor de number1
mostrarNúmero(númeromostrar, número2);
} else {//Insira número1, operador, número2
duplo d = Math.sqrt(Double.parseDouble(número2
.toString()));
número2.setLength(0);
number2.append(d); //Abre e armazena o valor de number2
mostrarNúmero(númeromostrar, número2);
}
}
});
}
public void add(StringBuilder s1, String s2) {// Define o método para alterar a string digital após a entrada do botão
if (s2.equals("+/-")) {// Define a mudança da string digital após inserir "+/-"
if (s1.toString().equals("") || s1.toString().equals("0")) {// Se a string numérica estiver vazia ou 0, nenhuma alteração ocorrerá
s1.append("");
} else {// Se a string numérica não estiver vazia nem 0, adicione ou exclua o caractere "-" antes da string numérica
if (s1.toString().startsWith("-")) {
s1.deleteCharAt(0);
} outro {
s1.inserir(0, "-");
}
}
}
if (s2.equals(".")) {// Defina a alteração da string digital após inserir "."
if (s1.toString().indexOf(".") == -1) {// Descubra se a string numérica contém o caractere "."
if (s1.toString().equals("")) {// Se a string numérica estiver vazia, defina-a como "0".
s1.setLength(0);
s1.append("0.");
} outro {
s1.append(".");
}
} else {// Se houver, nenhuma alteração ocorrerá
s1.append("");
}
}
if (s2.equals("0")) {// Define a mudança da string digital após inserir "0"
if (s1.toString().equals("0")) {// Quando a string numérica é "0", nenhuma alteração ocorre
s1.append("");
} else {// Quando a string numérica for "0", adicione "0" após a string
s1.append("0");
}
}
for (int i = 1; i < 10; i++) {//Através do loop, defina as alterações na string digital após inserir 1-9
String str = String.valueOf(i);
if (s2.equals(str)) {// Defina a mudança da string digital após inserir 1-9
if (s1.toString().equals("0")) {
s1.setLength(0);
s1.append(str);
} outro
s1.append(str);
}
}
}
public void showNumber(JTextField j, StringBuilder s) {//Método para definir como exibir strings numéricas na área de exibição de números
if (s.toString().equals("") == verdadeiro || s.toString().equals("0") == verdadeiro) {
j.setText("0.");
} else if (s.toString().indexOf(".") == -1) {
j.setText(s.toString() + ".");
} outro {
j.setText(s.toString());
}
}
}