我还在学习Java,目前正在为课堂作业建立多项选择测验。我已经编写了代码并且它工作得很好,但是当我重新编辑它时感觉就像是一个长时间的混乱。我想把它分解成不同的类和方法,但是当我尝试时它似乎变得更加复杂。有没有更好(更优雅)的方式来做到这一点?以下是我正在使用的内容...
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 700, 700);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
Font smallFont = new Font("Bookman Old Style", Font.ITALIC, 12);
Font smallBoldFont = new Font("Bookman Old Style", Font.BOLD, 12);
Font medBoldFont = new Font("Bookman Old Style", Font.BOLD, 18);
Font medBoldItalFont = new Font("Bookman Old Style", Font.BOLD +
Font.ITALIC, 18);
JLabel lblSubjectQuiz = new JLabel("SUBJECT QUIZ");
lblSubjectQuiz.setHorizontalTextPosition(SwingConstants.CENTER);
lblSubjectQuiz.setVerticalTextPosition(SwingConstants.CENTER);
lblSubjectQuiz.setHorizontalAlignment(SwingConstants.CENTER);
lblSubjectQuiz.setBounds(10, 10, 664, 70);
lblSubjectQuiz.setFont(new Font("Bookman Old Style", Font.BOLD, 28));
JLabel lblQuestion = new JLabel();
lblQuestion.setText("<html>" +
qAndA.getQuestion(randNum.qNumbers.get(qCount)) + "</html>");
lblQuestion.setHorizontalTextPosition(SwingConstants.CENTER);
lblQuestion.setVerticalTextPosition(SwingConstants.CENTER);
lblQuestion.setHorizontalAlignment(SwingConstants.CENTER);
lblQuestion.setFont(new Font("Bookman Old Style", Font.PLAIN, 18));
lblQuestion.setBounds(10, 86, 664, 126);
// Create radio buttons for the answer choices
JRadioButton btnAnswerA = new JRadioButton();
btnAnswerA.setFont(smallFont);
btnAnswerA.setBounds(28, 252, 325, 35);
btnAnswerA.setText(qAndA.getAnsA(randNum.qNumbers.get(qCount)));
JRadioButton btnAnswerB = new JRadioButton();
btnAnswerB.setFont(smallFont);
btnAnswerB.setBounds(28, 292, 325, 35);
btnAnswerB.setText(qAndA.getAnsB(randNum.qNumbers.get(qCount)));
JRadioButton btnAnswerC = new JRadioButton();
btnAnswerC.setFont(smallFont);
btnAnswerC.setBounds(28, 332, 325, 35);
btnAnswerC.setText(qAndA.getAnsC(randNum.qNumbers.get(qCount)));
JRadioButton btnAnswerD = new JRadioButton();
btnAnswerD.setFont(smallFont);
btnAnswerD.setBounds(28, 372, 325, 35);
btnAnswerD.setText(qAndA.getAnsD(randNum.qNumbers.get(qCount)));
ButtonGroup radioButtons = new ButtonGroup();
radioButtons.clearSelection();
radioButtons.add(btnAnswerA);
radioButtons.add(btnAnswerB);
radioButtons.add(btnAnswerC);
radioButtons.add(btnAnswerD);
JLabel lblRightAns = new JLabel("<html>" + "Correct!" + "</html>");
lblRightAns.setVisible(false);
lblRightAns.setHorizontalAlignment(SwingConstants.CENTER);
lblRightAns.setFont(medBoldItalFont);
lblRightAns.setForeground(Color.GREEN);
lblRightAns.setBounds(427, 240, 222, 64);
答案 0 :(得分:-1)
使用数组实现紧凑和更快的结果 这是您的代码的解决方案 如果有效,请给我积极的答复
JRadioButton btnAnswer[]=new JRadioButton[4];
ButtonGroup radioButtons = new ButtonGroup();
radioButtons.clearSelection();
for (int i=0;i<4;i++){
btnAnswer[i].setFont(smallFont);
btnAnswer[i].setBounds(28, 252 + i*40, 325, 35);
radioButtons.add(btnAnswer[i]);
btnAnswer[i].setText(qAndA.getAnsB(randNum.qNumbers.get(qCount)));
}