Skip to content

Instantly share code, notes, and snippets.

@wadiemendja
Last active July 8, 2020 13:51
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.* ;
import javax.swing.border.LineBorder;
import javax.swing.border.SoftBevelBorder;
class questions extends JPanel {
JLabel Q ,
hintLabel;
JButton option1 ,
option2,
option3,
option4 ;
String correct_answer,
hint ;
static boolean next = false ;
static int score = 0 ;
static JLabel timer = new JLabel ("00 : 00 : 000") ;
static counter count = new counter ();
questions (quiz2 obj , JFrame window) {
Q = new JLabel (obj.question);
hintLabel = new JLabel("Hint");
option1 = new JButton (obj.op1) ;
option2 = new JButton (obj.op2) ;
option3 = new JButton (obj.op3) ;
option4 = new JButton (obj.op4) ;
correct_answer = obj.correct_answer ;
hint = obj.hint ;
JPanel pan = new JPanel () ;
pan.setLayout(null);
pan.setBorder(BorderFactory.createLineBorder(Color.gray));
pan.setBackground(Color.DARK_GRAY);
window.setContentPane(pan);
setLayout(null);
setBackground(Color.getHSBColor(154, 254, 25));
setBounds(90,170,600,200);
setBorder(BorderFactory.createLineBorder(Color.black));
pan.add(this);
add(Q); add(option1); add(option2); add(option3); add(option4);
Q.setBounds(110,8,400,50);
Q.setBorder(new LineBorder(Color.blue, 2, true));
Q.setHorizontalAlignment(JLabel.CENTER);
option1.setBounds(90,70,200,40); option1.setBackground(new Color(255,255,255)) ;
option2.setBounds(90,140,200,40); option2.setBackground(new Color(255,255,255)) ;
option3.setBounds(330,70,200,40); option3.setBackground(new Color(255,255,255)) ;
option4.setBounds(330,140,200,40); option4.setBackground(new Color(255,255,255)) ;
option1.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
option2.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
option3.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
option4.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
timer.setBounds(250,400,300,50);
timer.setFont(new Font("Verdana", Font.BOLD, 40));
timer.setHorizontalAlignment(JLabel.CENTER);
timer.setBorder(BorderFactory.createLineBorder(Color.white));
timer.setForeground(Color.white);
pan.add(timer);
JButton hintBTN = new JButton(new ImageIcon(getClass().getResource("hint.png")));
JButton half = new JButton(new ImageIcon(getClass().getResource("50 50.png")));
pan.add(half); pan.add(hintBTN); pan.add(hintLabel);
hintBTN.setBounds(200,50,80,80);
hintBTN.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
half.setBounds(500,50,80,80);
half.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
hintLabel.setBounds(290,50,200,80);
hintLabel.setHorizontalAlignment(JLabel.CENTER);
hintLabel.setForeground(Color.white);
hintLabel.setBorder(new LineBorder(Color.white, 2, true));
hintBTN.addActionListener((ActionEvent e) -> {
hintLabel.setText(hint);
});
half.addActionListener((ActionEvent e) -> {
if (!option1.getText().equals(correct_answer)) {
option1.setEnabled(false);
option1.setBackground(Color.red);
}else if (!option2.getText().equals(correct_answer)) {
option2.setEnabled(false);
option2.setBackground(Color.red);
}
if (!option3.getText().equals(correct_answer)) {
option3.setEnabled(false);
option3.setBackground(Color.red);
}else if (!option4.getText().equals(correct_answer)) {
option4.setEnabled(false);
option4.setBackground(Color.red);
}
});
window.setVisible(true);
}
void getAnswer (int time) throws InterruptedException {
option1.addActionListener((ActionEvent e) -> {
if (option1.getText().equals(correct_answer)) score++ ;
next = true ;
});
option2.addActionListener((ActionEvent e) -> {
if (option2.getText().equals(correct_answer)) score++ ;
next = true ;
});
option3.addActionListener((ActionEvent e) -> {
if (option3.getText().equals(correct_answer)) score++ ;
next = true ;
});
option4.addActionListener((ActionEvent e) -> {
if (option4.getText().equals(correct_answer)) score++ ;
next = true ;
});
while (next == false ) {
timer.setText(String.format("%02d", count.M)+" : "+String.format("%02d", count.S)+" : "+String.format("%03d", count.Ms));
count.Ms++ ;
Thread.sleep(1);
if (count.Ms==999){
count.S++ ;
count.Ms=0 ;
}
if (count.S==59){
count.M++ ;
count.S=0;
}
if ((count.S + count.M*60) > time-3 ) {
timer.setForeground(Color.red);
if ((count.S + count.M*60)==time) {
return ;
}
}
}
next = false ;
}
int getScore() {return score ;}
counter getTime () {return count ;}
void Reset () {
count.M=0 ;
count.Ms=0 ;
count.S=0;
score = 0 ;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment