初めて質問します。
Javaを勉強し始めてまだ日が浅いです。
今Javaのswingを使ってGUIな電卓を作っています。
そこでわからないところが出てきたので教えて下さい。
なるべくシンプルなソースコードでお願いしますm(_ _)m
<サンプル電卓>
https://gyazo.com/fdfb8fde31e145ec09dccaa3e4cb5efc
上記の画像のように文字を連結して表示するところまではうまく行ったのですが、
+を押してもこのままだとずっと連結しているので、四則演算記号のボタンを押すと連結を解除するにはどうすればよろしいのでしょうか?
また電卓らしく四則演算もさせたいのですが、1+2の1の値は格納できるのですが、2の値はどのように格納すればいいのか検討がつかないのでこちらも合わせて質問いたします。
なるべく急ぎでよろしくお願いします。
/*電卓画面設計部分*/ //電卓答え表示画面 /*0だけ別のラベルを設置する-1桁目0のとき連結防止*/ lbl_0 = new JLabel("0",JLabel.RIGHT); lbl_0.setPreferredSize(new Dimension(250,50)); lbl_0.setBorder(new LineBorder(Color.BLUE, 2, true)); lbl_0.setFont(new Font("Arial", Font.PLAIN, 28)); //電卓表示画面1段目 lbl_a = new JLabel("",JLabel.RIGHT); lbl_a.setPreferredSize(new Dimension(250,50)); lbl_a.setBorder(new LineBorder(Color.BLUE, 2, true)); lbl_a.setFont(new Font("Arial", Font.PLAIN, 28)); lbl_b = new JLabel("",JLabel.RIGHT); lbl_b.setPreferredSize(new Dimension(250,50)); lbl_b.setBorder(new LineBorder(Color.BLUE, 2, true)); lbl_b.setFont(new Font("Arial", Font.PLAIN, 28)); //Button設計 btn0 = new JButton("0"); btn1 = new JButton("1"); btn2 = new JButton("2"); btn3 = new JButton("3"); btn4 = new JButton("4"); btn5 = new JButton("5"); btn6 = new JButton("6"); btn7 = new JButton("7"); btn8 = new JButton("8"); btn9 = new JButton("9"); btnp = new JButton("+"); btnm = new JButton("―"); btnd = new JButton("÷"); btnk = new JButton("×"); btne = new JButton("="); panel = new JPanel(); panel.setLayout(new GridLayout(5, 4)); panel.add(btn7); panel.add(btn8); panel.add(btn9); panel.add(btn4); panel.add(btn5); panel.add(btn6); panel.add(btn1); panel.add(btn2); panel.add(btn3); panel.add(btn0); panel.add(btnp); panel.add(btnm); panel.add(btnk); panel.add(btnd); panel.add(btne); //ActionListener設置 btn0.addActionListener(this); btn1.addActionListener(this); btn2.addActionListener(this); btn3.addActionListener(this); btn4.addActionListener(this); btn5.addActionListener(this); btn6.addActionListener(this); btn7.addActionListener(this); btn8.addActionListener(this); btn9.addActionListener(this); btnp.addActionListener(this); btnm.addActionListener(this); btnk.addActionListener(this); btnd.addActionListener(this); //各部品をJFrameに設置 this.add(lbl_0,BorderLayout.NORTH); this.add(lbl_q, BorderLayout.CENTER); this.add(panel, BorderLayout.SOUTH); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(250, 350); this.setVisible(true); } public static void main(String[]args){ dentaku app = new dentaku("サンプル電卓"); } public void actionPerformed(ActionEvent ae) { // TODO 自動生成されたメソッド・スタブ JButton source = (JButton)ae.getSource(); StringBuilder temp =new StringBuilder(); //ラベル差し替え lbl_0.setText(""); this.add(lbl_a,BorderLayout.NORTH); //buttonが押された時の処理 if (source == this.btn0){ temp.append("0"); }else if(source == this.btn1){ temp.append("1"); }else if(source == this.btn2){ temp.append("2"); }else if(source == this.btn3){ temp.append("3"); }else if(source == this.btn4){ temp.append("4"); }else if(source == this.btn5){ temp.append("5"); }else if(source == this.btn6){ temp.append("6"); }else if(source == this.btn7){ temp.append("7"); }else if(source == this.btn8){ temp.append("8"); }else if(source == this.btn9){ temp.append("9"); } lbl_a.setText(lbl_a.getText()+temp); if(source == this.btnp || source == this.btnm || source == this.btnk || source == this.btnd){ //1+2の1の部分格納 float before=Float.parseFloat((String)lbl_a.getText()+temp); } }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/19 22:51
2015/11/19 23:49
2015/11/20 03:34