0

这是我的简单计算器代码。我试图添加一些特殊的代码。我希望这个程序:它只会使用 2 个偶数或 2 个奇数进行四个算术运算。例如,如果用户尝试同时单击偶数和奇数,我的代码会发出警告,如"You can click 2 even numbers or 2 odd numbers"。如何将切换按钮单击的值用作 int 和 useif(value%2==0)语句?

package tr.com.bites;
import java.util.List;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.JToggleButton;
public class CalculatorView_1 extends javax.swing.JFrame {
     JToggleButton[] buttons =  new JToggleButton[4];
    public CalculatorView_1() {
        initComponents();
        buttons[0]=jToggleButton12;
        buttons[1]=jToggleButton11;
        buttons[2]=jToggleButton10;
        buttons[3]=jToggleButton13;
    }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jToggleButton1 = new javax.swing.JToggleButton();
        jToggleButton2 = new javax.swing.JToggleButton();
        jToggleButton3 = new javax.swing.JToggleButton();
        jToggleButton4 = new javax.swing.JToggleButton();
        jToggleButton5 = new javax.swing.JToggleButton();
        jToggleButton6 = new javax.swing.JToggleButton();
        jToggleButton7 = new javax.swing.JToggleButton();
        jToggleButton8 = new javax.swing.JToggleButton();
        jToggleButton9 = new javax.swing.JToggleButton();
        jToggleButton10 = new javax.swing.JToggleButton();
        jToggleButton11 = new javax.swing.JToggleButton();
        jToggleButton12 = new javax.swing.JToggleButton();
        jToggleButton13 = new javax.swing.JToggleButton();
        jToggleButton14 = new javax.swing.JToggleButton();
        jTextField1 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jToggleButton1.setText("1");
        jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton1ActionPerformed(evt);
            }
        });

        jToggleButton2.setText("2");
        jToggleButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton2ActionPerformed(evt);
            }
        });

        jToggleButton3.setText("3");
        jToggleButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton3ActionPerformed(evt);
            }
        });

        jToggleButton4.setText("5");
        jToggleButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton4ActionPerformed(evt);
            }
        });

        jToggleButton5.setText("4");
        jToggleButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton5ActionPerformed(evt);
            }
        });

        jToggleButton6.setText("6");
        jToggleButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton6ActionPerformed(evt);
            }
        });

        jToggleButton7.setText("8");
        jToggleButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton7ActionPerformed(evt);
            }
        });

        jToggleButton8.setText("7");
        jToggleButton8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton8ActionPerformed(evt);
            }
        });

        jToggleButton9.setText("9");
        jToggleButton9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton9ActionPerformed(evt);
            }
        });

        jToggleButton10.setText("*");
        jToggleButton10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton10ActionPerformed(evt);
            }
        });

        jToggleButton11.setText("-");
        jToggleButton11.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton11ActionPerformed(evt);
            }
        });

        jToggleButton12.setText("+");
        jToggleButton12.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton12ActionPerformed(evt);
            }
        });

        jToggleButton13.setText("/");
        jToggleButton13.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton13ActionPerformed(evt);
            }
        });

        jToggleButton14.setText("=");
        jToggleButton14.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButton14ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jToggleButton8)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton9))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jToggleButton5)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton6))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jToggleButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton3)))
                .addGap(34, 34, 34)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jToggleButton12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jToggleButton11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jToggleButton10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jToggleButton13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jToggleButton14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(78, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(36, 36, 36)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jToggleButton12)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton11)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jToggleButton10))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jToggleButton1)
                            .addComponent(jToggleButton2)
                            .addComponent(jToggleButton3))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jToggleButton5)
                            .addComponent(jToggleButton4)
                            .addComponent(jToggleButton6))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jToggleButton8)
                            .addComponent(jToggleButton7)
                            .addComponent(jToggleButton9))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jToggleButton13)
                .addGap(41, 41, 41)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jToggleButton14)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(90, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("1");
       valueCheck("1",jToggleButton1);
    }                                              

    private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("2");
       valueCheck("2",jToggleButton2);
    }                                              

    private void jToggleButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("3");
       valueCheck("3",jToggleButton3);
    }                                              

    private void jToggleButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("4");
       valueCheck("4",jToggleButton5);
    }                                              

    private void jToggleButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("5");
       valueCheck("5",jToggleButton4);
    }                                              

    private void jToggleButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("6");
       valueCheck("6",jToggleButton6);
    }                                              

    private void jToggleButton8ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("7");
       valueCheck("7",jToggleButton8);

    }                                              

    private void jToggleButton7ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("8");
       valueCheck("8",jToggleButton7);
    }                                              

    private void jToggleButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                               
       processValue("9");
       valueCheck("9",jToggleButton9);
    }                                              

    private void jToggleButton12ActionPerformed(java.awt.event.ActionEvent evt) {                                                
       processValue("+");
       for(JToggleButton b: buttons)
           b.setSelected(false);
        if(values.contains("+"))
            jToggleButton12.setSelected(true);
    }                                               

    private void jToggleButton11ActionPerformed(java.awt.event.ActionEvent evt) {                                                
       processValue("-");
       for(JToggleButton b: buttons)
           b.setSelected(false);
        if(values.contains("-"))
            jToggleButton11.setSelected(true);
    }                                               

    private void jToggleButton10ActionPerformed(java.awt.event.ActionEvent evt) {                                                
       processValue("*");
       for(JToggleButton b: buttons)
           b.setSelected(false);
        if(values.contains("*"))
            jToggleButton10.setSelected(true);
    }                                               

    private void jToggleButton13ActionPerformed(java.awt.event.ActionEvent evt) {                                                
       processValue("/");
       for(JToggleButton b: buttons)
           b.setSelected(false);
        if(values.contains("/"))
            jToggleButton13.setSelected(true);
    }                                               

    private void jToggleButton14ActionPerformed(java.awt.event.ActionEvent evt) {                                                
        long total=-1;
        int firstNumber=-1;
        int secondNumber=-1;
        String process=null;
        for (String secilenler : values) {
            if(secilenler.equals("+"))
                process="+";  
            else if(secilenler.equals("-"))
                process="-";
            else if(secilenler.equals("*"))
                process="*"; 
            else if(secilenler.equals("/"))
                process="/";    
            else
            {
                if(firstNumber==-1)
                   firstNumber= Integer.parseInt(secilenler);
                else
                    secondNumber= Integer.parseInt(secilenler);
            }
        }
           if(process.equals("+"))
                total=firstNumber+secondNumber;
            else if(process.equals("-"))
                total=firstNumber-secondNumber;
            else if(process.equals("*"))
                total=firstNumber*secondNumber;
            else 
                total=firstNumber/secondNumber;
           jTextField1.setText(""+total);
    }                                               

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]){
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new CalculatorView_1().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JTextField jTextField1;
    private javax.swing.JToggleButton jToggleButton1;
    private javax.swing.JToggleButton jToggleButton10;
    private javax.swing.JToggleButton jToggleButton11;
    private javax.swing.JToggleButton jToggleButton12;
    private javax.swing.JToggleButton jToggleButton13;
    private javax.swing.JToggleButton jToggleButton14;
    private javax.swing.JToggleButton jToggleButton2;
    private javax.swing.JToggleButton jToggleButton3;
    private javax.swing.JToggleButton jToggleButton4;
    private javax.swing.JToggleButton jToggleButton5;
    private javax.swing.JToggleButton jToggleButton6;
    private javax.swing.JToggleButton jToggleButton7;
    private javax.swing.JToggleButton jToggleButton8;
    private javax.swing.JToggleButton jToggleButton9;
    // End of variables declaration                   
    private List<String> values=new ArrayList<String>();
    public void processValue(String strValue)
    {
        if(values.contains(strValue))
            values.remove(strValue);
        else
            values.add(strValue);
    }

    private void valueCheck(String value,JToggleButton button) {

        if(values.size()>2) 
        {
            processValue(value);
            button.setSelected(false);
            JOptionPane.showMessageDialog(this, "You cant click 3 buttons at the same time..");
        }
    }
    private void evenOdd(int valuee,JToggleButton buton)
    {

    }
}
4

2 回答 2

1
  • JToggleButton有两种状态,用JToggleButton.isSelected

  • 执行代码后需要重置状态JToggleButton.setSelected(false),因为鼠标/键事件切换JToggleButton

  • JToggleButton( JOptionPane.showMessageDialog(this, "You cant click 3 buttons at the same time..");) 不适JComponent用于计算器(键 0-9,+ - =),请JButton改用,有多种不同的方法可以正确地做到这一点,从ActionCommandorput/getClientProperty

  • 尽快发布SSCCE以获得更好的帮助

于 2013-07-23T06:30:10.343 回答
0

对于一个简单的计算器,我建议使用 JButtons 而不是 JToggleButtons。使用 JButtons,您可以简单地使用:

StringBuilder intbuilder = new StringBuilder();
int firstnumber;
int secondnumber;
String operation;
button5.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e)
    {
        intbuilder.append("5");
    }
});
multiplybutton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e)
    {
        firstnumber = Integer.parseInt(intbuilder.toString());
        operation = "*";
    }
});

并且一旦按下等号,只需根据字符串操作对两个数字执行操作即可。

于 2013-07-23T06:52:05.337 回答