以下の二択問題のプログラムについて質問です。
これは、swingを用いた二択問題です。将来的には四択問題にするつもりです。
プログラミング初心者なため、とても回りくどい書き方ですみません。
これのプログラムをもっと簡潔に書きたいのですが、どのようにすればいいのか分かりません。
何かアドバイスをください。よろしくお願いします。
import javax.swing.*; import java.awt.CardLayout; import java.awt.BorderLayout; import java.awt.event.*; public class sample extends JFrame implements ActionListener{ JPanel cardPanel; CardLayout layout; int n = 0; public static void main(String[] args){ sample frame = new sample(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } sample(){ /* 問題カード1 */ JPanel card1 = new JPanel(); card1.add(new JLabel("質問1")); JButton btn1 = new JButton("btn1"); card1.add(btn1); JButton btn2 = new JButton("btn2"); card1.add(btn2); /* 問題カード2 */ JPanel card2 = new JPanel(); card2.add(new JLabel("質問2")); JButton btn3 = new JButton("btn3"); card2.add(btn3); JButton btn4 = new JButton("btn4"); card2.add(btn4); /* 問題カード3 */ JPanel card3 = new JPanel(); card3.add(new JLabel("質問3")); JButton btn5 = new JButton("btn5"); card3.add(btn5); JButton btn6 = new JButton("btn6"); card3.add(btn6); /* ボタンアクション*/ btn1.addActionListener(this); btn1.setActionCommand("btn1"); btn2.addActionListener(this); btn2.setActionCommand("btn2"); btn3.addActionListener(this); btn3.setActionCommand("btn3"); btn4.addActionListener(this); btn4.setActionCommand("btn4"); btn5.addActionListener(this); btn5.setActionCommand("btn5"); btn6.addActionListener(this); btn6.setActionCommand("btn6"); cardPanel = new JPanel(); layout = new CardLayout(); cardPanel.setLayout(layout); cardPanel.add(card1, "btn1"); cardPanel.add(card1, "btn2"); cardPanel.add(card2, "btn3"); cardPanel.add(card2, "btn4"); cardPanel.add(card3, "btn5"); cardPanel.add(card3, "btn6"); cardPanel.add(card1, "質問1"); cardPanel.add(card2, "質問2"); cardPanel.add(card3, "質問3"); /* カード移動用ボタン(前へ,次へ) */ JButton prevButton = new JButton("前へ"); prevButton.addActionListener(this); prevButton.setActionCommand("前へ"); JButton nextButton = new JButton("次へ"); nextButton.addActionListener(this); nextButton.setActionCommand("次へ"); JPanel btnPanel = new JPanel(); btnPanel.add(prevButton); btnPanel.add(nextButton); getContentPane().add(cardPanel, BorderLayout.CENTER); getContentPane().add(btnPanel, BorderLayout.PAGE_END); } public void actionPerformed(ActionEvent e){ String cmd = e.getActionCommand(); /* 点数 */ if (cmd.equals("btn1")){ n += 1; }else if (cmd.equals("btn2")){ n = n; } if (cmd.equals("btn4")){ n += 1; }else if (cmd.equals("btn3")){ n = n; } if (cmd.equals("btn5")){ n += 1; }else if (cmd.equals("btn6")){ n = n; } /* 解説 */ if (cmd.equals("btn1")||cmd.equals("btn2")){ String s=Integer.toString(n); JLabel label1 = new JLabel("解説1,正解数は"+s+"問です。"); JOptionPane.showMessageDialog(this, label1); } if (cmd.equals("btn3")||cmd.equals("btn4")){ String s=Integer.toString(n); JLabel label2 = new JLabel("解説2,正解数は"+s+"問です。"); JOptionPane.showMessageDialog(this, label2); } if (cmd.equals("btn5")||cmd.equals("btn6")){ String s=Integer.toString(n); JLabel label3 = new JLabel("解説3,正解数は"+s+"問です。これで問題は終了です。"); JOptionPane.showMessageDialog(this, label3); } /* カード移動用ボタン(前と次) */ if (cmd.equals("前へ")){ layout.previous(cardPanel); }else if (cmd.equals("次へ")){ layout.next(cardPanel); } } }
コードはバッククオート三つで括ってください。よくわからない場合は、マークダウン記法について調べてみてください。これをしているかどうかで、回答の量と質が変わってきます。
回答1件
あなたの回答
tips
プレビュー