Escreva um aplicativo que simule uma calculadora, usando painel e layout de grade, adicionando uma caixa de texto, 10 botões numéricos (0~9), 4 botões de adição, subtração, multiplicação e divisão, um botão de sinal de igual, um botão de limpar e um quadrado O botão raiz, um botão de retrocesso, requer que a fórmula de cálculo e os resultados sejam exibidos na caixa de texto, e o efeito é mostrado na figura abaixo.
Código de calculadora simples Java:
import javax.swing.*; import java.swing.JTextField; import java.awt.*; import java.awt.event.*; ActionListener { private JPanel p1 = new JPanel(); //Criar painel private JPanel p2 = new JPanel(); t1; //Caixa de texto 1 é usada para exibir informações de entrada private JTextField t2; //Caixa de texto 2 é usada para exibir informações de resultado private JLabel label; //Informações do rótulo StringBuffer str; ,y ; //x e y são ambos operandos int z; //Z representa qual operador foi clicado 0 representa "+", 1 representa "*", 3 representa "/" private JButton b[. ] = novo JButton[12]; //Cria um array com 12 botões private JButton b1,b2,b3,b4,b5,b6,b7,b8; //Botão de função aritmética public Ex5_2() { super("Calculadora Simples" ); /Nome da janela Container c = getContentPane(); //Criar objeto do painel de conteúdo t1 = new JTextField(30); t1.setEditable(false); //Só pode ser exibido, não pode ser editado t2 = new JTextField(30); t2.setEditable(false); //Só pode ser exibido, não pode ser editado label = new JLabel("Bem-vindo a); Calculadora Edição Xiaowu ^_^o~ Trabalhe duro "); label.setForeground(Color.blue); //Crie um buffer de string vazio str=new StringBuffer(); p2.add(label); //Adiciona um rótulo ao painel p2.add(t2); //Adiciona uma caixa de texto ao painel p2.add(t1); //Adiciona uma caixa de texto ao painel p2.setLayout(new GridLayout(4,1); )); //Colocar O layout do painel é de 4 linhas e 1 coluna for(int i=0;i<10;i++) //Definir rótulos para os botões 0~9 no array e registrar os ouvintes { String s=""+ eu; b [eu]= novo JButton(s); b[i].addActionListener(this } //Instancia cada botão b[10]= new JButton("-/+"); = novo JButton("/"); b2= novo JButton("Voltar"); JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("-"); ;i<12;i++) { b[i].setForeground(Color.blue } b1.setForeground(Color.red); b5.setForeground(Color.red); b7.setForeground(Color.red); b2.setForeground(Color.blue); .blue); //Adicionar ao painel p1.add(b[7]); p1.add(b[9]); p1.add(b1); 6]); p1.add(b3); p1.add(b5);p1.add(b6);p1.add(b[0]); ;p1.add(b8); p1.setLayout(new GridLayout(4,5,5,5)); //Registrar ouvinte b[10].addActionListener(this); b[11].addActionListener(este); b1.addActionListener(este); b5.addActionListener(este); )); b7.addActionListener(este); b8.addActionListener(este); //Adiciona o painel ao painel de conteúdo c.add(p2); c.add(p1); c.setLayout(new FlowLayout()); //Definir o layout sequencial setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); janela para fechar Ação setVisible(true); //Definir como visível setResizable(false); //Proibir ajuste do tamanho do quadro setSize(400,300); //O método principal implementa a criação de uma janela public static void main(String[] args) { Ex5_2 f = new Ex5_2() } //Processamento de evento de botão public void actionPerformed(ActionEvent e) { try { if(e.getSource(); )==b4) //Selecione "C" para limpar { t1.setText("0"); //Limpa a caixa de texto t1.setHorizontalAlignment(JTextField.RIGHT); //Alinha o texto à direita str.setLength(0); //Limpa o buffer de string para se preparar para receber novos operandos de entrada} else if(e.getSource); ()==b[10])//Clique em "+/-" para selecionar se o operando de entrada é um número positivo ou negativo{ x=Double.parseDouble(t1.getText().trim());//A função trim é remover espaços na string t1.setText(""+(-x)); ; } else if (e.getSource()==b5)//Clique no botão de adição para obter o valor de x e z e limpar o valor de y{ x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d } else if(e.getSource()==b7)//Clique para reduzir Button obtém o valor de x e z e limpa o valor de y { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=1 } else if(e.getSource()==b3)//Clique no botão de multiplicação para obter o valor de x e z e limpar o valor de y{ x =Double.parseDouble(t1.getText().trim()); str.setLength(0); if(e.getSource()==b1)//Clique no botão de divisão para obter o valor de x e z e limpar o valor de y{ x=Double.parseDouble(t1.getText().trim()); .setLength(0); y=0d; z=3 } else if(e.getSource()==b8)//Clique no botão do sinal de igual para gerar o resultado do cálculo { str.setLength(0); switch(z) { case 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);quebra caso 1: t1.setText(""+(xy)); setHorizontalAlignment(JTextField.RIGHT);quebra caso 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);quebra; caso 3: t1.setText(""+(x/y)); ;quebrar; } } senão if(e.getSource()==b[11])//Clique no botão "." para inserir o decimal { if(t1.getText().trim().indexOf('.')!=-1) // Determine se a string já contém um ponto decimal { } else //Se não houver ponto decimal { if(t1.getText().trim().equals("0"))//Se for inicialmente exibido como 0 { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT } else if(t1.getText().trim().equals(""))/ /Se inicialmente exibido como vazio, não faça nada {} else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); Encontre a raiz quadrada { x=Double.parseDouble(t1.getText().trim()); { t1.setText("Exceção de formato de número"); t1.setHorizontalAlignment(JTextField.RIGHT } else { t1.setText(""+Math.sqrt(x)); .setComprimento(0); y=0d } senão { if(e.getSource()==b[0])//Se a tecla numérica "0" for selecionada { if(t1.getText().trim().equals("0"))//Se for exibido Se a exibição da tela for zero, nenhuma operação será executada {} else t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim() } else if (e.getSource()==b2) //A tecla voltar é selecionada { if(! t1.getText().trim().equals("0"))//Se o display não mostrar zero{ if(str.length()!=1) { t1.setText(str.delete(str.length()-1,str.length()).toString());//Uma exceção de string fora dos limites pode ser lançada t1.setHorizontalAlignment(JTextField.RIGHT) ; } senão { t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=Double.parseDouble(t1.getText().trim() } else { t1.setText(str.append(e.getActionCommand()).toString()); ; y=Double.parseDouble(t1.getText().trim()); catch(NumberFormatException e1){ t1.setText("Exceção de formato de número"); e1){t1.setText("Índice de string fora dos limites"); t1.setHorizontalAlignment(JTextField.RIGHT);} } }Renderização de operação:
Isso completa a programação de uma calculadora Java simples. Espero que este artigo possa inspirar todos a escrever calculadoras. Esta é apenas uma calculadora simples e você pode continuar a usá-la para melhorar as funções da calculadora.