codice:
import java.awt.*
import javax.swing.*
import quiz.QuizPatente;
public class QuizABFrame extends JFrame {
private JTextArea areaTime;
private int resMinuti = 29;
private int resSecondi = 59;
private int tmpMin, tmpSec;
private int generalIndex = 0;
public QuizABFrame(){
visualizza(settings.QuizABFrame.DEFAULT_START_QUIZ, resMinuti, resSecondi);
}
public void visualizza(int index, int minuti, int secondi){
this.setContentPane(new Container());
this.setBackground(settings.QuizABFrame.sfondo);
makeTopHeader('M');
makeMiddleHeader();
makeBottomHeader();
makeBodyQuiz(index);
makeFooterQuiz(index, minuti, secondi);
insertLogo();
}
public void visualizzaRiassunto(int minuti, int secondi){
this.setContentPane(new Container());
this.setBackground(settings.QuizABFrame.sfondo);
makeTopHeader('R');
makeBodyQuizRiassunto();
makeFooterQuiz(settings.QuizABFrame.DEFAULT_START_QUIZ, minuti, secondi);
insertLogo();
}
private void insertLogo() {
JLabel logo = new JLabel(new ImageIcon("imgs/logo5ruote.png"));
logo.setBounds(465, 495, 85, 73);
this.getContentPane().add(logo);
}
private void makeTopHeader(char frameType){
switch (frameType){
case 'M': JLabel [] uno_quarantaLab = new JLabel[4];
ImageIcon [] uno_quarantaImg = {new ImageIcon("imgs/quizLayout/topHeader/uno_dieci_small.gif"), new ImageIcon("imgs/quizLayout/topHeader/undici_venti_small.gif"),
new ImageIcon("imgs/quizLayout/topHeader/ventuno_trenta_small.gif"),new ImageIcon("imgs/quizLayout/topHeader/trentuno_quaranta_small.gif")};
for (int i=0; i<uno_quarantaLab.length; i++){
uno_quarantaLab[i] = new JLabel(uno_quarantaImg[i]);
uno_quarantaLab[i].setBounds((i*226),0, 226,56);
this.getContentPane().add(uno_quarantaLab[i]);
}
break;
case 'R': JLabel header = new JLabel(new ImageIcon("imgs/quizLayout/topHeader/header_riassunto.jpg"));
header.setBounds(0,0,920,75);
this.getContentPane().add(header);
break;
}
}
private void makeMiddleHeader() {
JLabel [] uno_dieciLab = new JLabel[10];
for (int i=0; i<uno_dieciLab.length; i++){
uno_dieciLab[i] = new JLabel(new ImageIcon("imgs/quizLayout/middleHeader/"+(i+1)+"_10.gif"));
if(i==0)
uno_dieciLab[i].setBounds(1,62, 92,53);
else
uno_dieciLab[i].setBounds(3+(i*90),62, 90,53);
this.getContentPane().add(uno_dieciLab[i]);
}
}
private void makeBottomHeader() {
JLabel [] uno_quarantaLab = new JLabel[40];
for (int i=0; i<uno_quarantaLab.length; i++){
uno_quarantaLab[i] = new JLabel(new ImageIcon("imgs/quizLayout/bottomHeader/"+(i+1)+"_40.gif"));
if(i==0){
uno_quarantaLab[i].setBounds(0,123, 25,22);
}else{
if(i <= 22){
uno_quarantaLab[i].setBounds(2+(i*23),123, 23,22);
}else{
uno_quarantaLab[i].setBounds(2+(i*22)+22,123, 22,22);
}
}
this.getContentPane().add(uno_quarantaLab[i]);
}
}
private void makeBodyQuiz(int index){
JLabel numProp = new JLabel(new ImageIcon("imgs/quizLayout/prop_number/prop_"+(index+1)+".gif"));
numProp.setBounds(837, 160, 53, 51);
this.getContentPane().add(numProp);
JTextArea ta = new JTextArea(9,50);
ta.setText("\n\n\n"+QuizPatente.quiz[index].risposta);
ta.setFont(settings.QuizABFrame.fontTxtArea);
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
ta.setBounds(settings.QuizABFrame.TXT_LOCATION_X,settings.QuizABFrame.TXT_LOCATION_Y,settings.QuizABFrame.TXT_AREA_WIDTH, settings.QuizABFrame.TXT_AREA_HIGH);
ta.setEnabled(false);
this.add(ta);
JLabel segnale = new JLabel(new ImageIcon("imgs/rappresentazioni_grafiche/s"+QuizPatente.quiz[index].segnale+".gif"));
segnale.setBounds(50, 170, 280, 280);
this.getContentPane().add(segnale);
JLabel bgSegnale = new JLabel(new ImageIcon("imgs/quizLayout/bg_segnale.gif"));
bgSegnale.setBounds(settings.QuizABFrame.BG_SEGNALE_LOCATION_X, settings.QuizABFrame.BG_SEGNALE_LOCATION_Y, settings.QuizABFrame.BG_SEGNALE_WIDTH,settings.QuizABFrame.BG_SEGNALE_HIGH );
this.getContentPane().add(bgSegnale);
JLabel []soluzioni = new JLabel[2];
switch (QuizPatente.risposte_user[index]){
case 'N': soluzioni[0] = new JLabel(new ImageIcon("imgs/quizLayout/V.gif"));
soluzioni[1] = new JLabel(new ImageIcon("imgs/quizLayout/F.gif"));
break;
case 'V': soluzioni[0] = new JLabel(new ImageIcon("imgs/quizLayout/VX.gif"));
soluzioni[1] = new JLabel(new ImageIcon("imgs/quizLayout/F.gif"));
break;
case 'F': soluzioni[0] = new JLabel(new ImageIcon("imgs/quizLayout/V.gif"));
soluzioni[1] = new JLabel(new ImageIcon("imgs/quizLayout/FX.gif"));
break;
}
soluzioni[0].setBounds(550, 400, 55, 55);
soluzioni[1].setBounds(700, 400, 55, 55);
this.generalIndex = index;
soluzioni[0].addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent arg) {
QuizPatente.risposte_user[generalIndex]='V';
if(settings.QuizABFrame.AVANTI_AUTO)
visualizza(((generalIndex+1)%40), tmpMin, tmpSec);
else
visualizza(generalIndex, tmpMin, tmpSec);
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
});
soluzioni[1].addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent arg) {
QuizPatente.risposte_user[generalIndex]='F';
if(settings.QuizABFrame.AVANTI_AUTO)
visualizza(generalIndex+1, tmpMin, tmpSec);
else
visualizza(generalIndex, tmpMin, tmpSec);
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
});
this.getContentPane().add(soluzioni[0]);
this.getContentPane().add(soluzioni[1]);
JLabel bgVF = new JLabel(new ImageIcon("imgs/quizLayout/bg_VF.gif"));
bgVF.setBounds(settings.QuizABFrame.TXT_LOCATION_X, 350, 500, 150);
this.getContentPane().add(bgVF);
}
private void makeBodyQuizRiassunto() {
JLabel [][] riassuntoQuesiti = new JLabel[settings.QuizABFrame.MAX_QUESITO_QUIZ+1][4];
/*for (int i=0; i<riassuntoQuesiti.length; i++){
riassuntoQuesiti[i][0] = new JLabel(new ImageIcon("imgs/rappresentazioni_grafiche/s"+QuizPatente.quiz[i].segnale+".gif"));
riassuntoQuesiti[i][1] = new JLabel(QuizPatente.quiz[i].risposta);
riassuntoQuesiti[i][1].setFont(settings.QuizABFrame.fontTxtAreaRiassunto);
switch(QuizPatente.risposte_user[i]){
case 'N': riassuntoQuesiti[i][2] = new JLabel();
riassuntoQuesiti[i][3] = new JLabel();
break;
case 'V': riassuntoQuesiti[i][2] = new JLabel();
riassuntoQuesiti[i][3] = new JLabel();
break;
case 'F': riassuntoQuesiti[i][2] = new JLabel();
riassuntoQuesiti[i][3] = new JLabel();
break;
}
}
riassuntoQuesiti[0][1].setBounds(50, 50, 300, 100);
this.getContentPane().add(riassuntoQuesiti[0][1]);*/
JLabel bg = new JLabel(new ImageIcon("imgs/quizLayout/bg_riassunto.gif"));
bg.setBounds(48, 83, 750, 391);
for(int i=1; i<=5; i++){
JTextArea ta = new JTextArea();
JLabel labV = new JLabel(new ImageIcon("imgs/quizLayout/V.gif"));
labV.setBounds(735, (76*i)+9+10, 55, 55);
JLabel labF = new JLabel(new ImageIcon("imgs/quizLayout/F.gif"));
labF.setBounds(800, (76*i)+9+10, 55, 55);
JLabel jla = new JLabel(new ImageIcon("imgs/rappresentazioni_grafiche/miniature/s"+QuizPatente.quiz[i].segnale+".gif"));
jla.setBounds(49, (76*i)+9, 75, 75);
ta.setText(QuizPatente.quiz[i].risposta);
//ta.setBackground(settings.QuizABFrame.sfondo);
ta.setFont(settings.QuizABFrame.fontTxtAreaRiassunto);
ta.setForeground(Color.BLACK);
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
ta.setBounds(125, (76*i)+9, 600, 75);
ta.setEnabled(false);
this.add(jla);
this.add(ta);
this.add(labV);
this.add(labF);
}
//this.add(bg);
}
private void makeFooterQuiz(int index, int minuti, int secondi) {
makeAvantiIndietro(index);
JLabel []numero_nome = new JLabel[2];
numero_nome[0] = new JLabel("Numero Scheda");
numero_nome[1] = new JLabel("Nome e Cognome");
numero_nome[0].setBounds(220, 485, 100, 20);
numero_nome[1].setBounds(220, 530, 100, 20);
this.getContentPane().add(numero_nome[0]);
this.getContentPane().add(numero_nome[1]);
JTextArea []num_nom = new JTextArea[2];
num_nom[0] = new JTextArea(" 871");
num_nom[1] = new JTextArea(" "+settings.Generali.NOME+" "+settings.Generali.COGNOME);
num_nom[0].setBounds(220, 507, 200, 20);
num_nom[1].setBounds(220, 550, 200, 20);
num_nom[0].setEnabled(false);
num_nom[1].setEnabled(false);
num_nom[0].setFont(settings.QuizABFrame.fontNumeroNome);
num_nom[1].setFont(settings.QuizABFrame.fontNumeroNome);
this.getContentPane().add(num_nom[0]);
this.getContentPane().add(num_nom[1]);
areaTime = new JTextArea(" : ");
areaTime.setBounds(settings.QuizABFrame.TIME_LOCATION_X,settings.QuizABFrame.TIME_LOCATION_Y,
settings.QuizABFrame.TIME_AREA_WIDTH, settings.QuizABFrame.TIME_AREA_HIGH);
areaTime.setEditable(false);
areaTime.setFont(settings.QuizABFrame.fontTime);
areaTime.setBorder(settings.QuizABFrame.borderTime);
areaTime.setBackground(settings.QuizABFrame.sfondo);
this.getContentPane().add(areaTime);
this.setLayout(null);
this.setSize(settings.QuizABFrame.dimensione);
this.setLocation(settings.QuizABFrame.posizione);
this.getContentPane().setBackground(settings.QuizABFrame.sfondo);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("A5R Quiz A/B");
this.setVisible(true);
resMinuti = minuti;
resSecondi = secondi;
new SwingWorker<Void, String>() {
public Void doInBackground() throws Exception {
for (int i = resMinuti; i >= 0; i--){
for(int j = resSecondi; j >= 0; j--) {
//publish(i);
if(i >= 10 && j >= 10)
publish(" "+i+":"+j);
if(i >= 10 && j < 10)
publish(" "+i+":0"+j);
if(i < 10 && j >= 10)
publish(" 0"+i+":"+j);
if(i < 10 && j < 10)
publish(" 0"+i+":0"+j);
tmpMin = i;
tmpSec = j;
Thread.sleep(1000);
}
}
return null;
}
public void process(java.util.List<String> data) {
for(String e: data) areaTime.setText("" + e);
}
}.execute();
/*try {
for(int i=30; i>0; i--) {
Thread.sleep(1000);
//System.out.println(i);
area.setText(""+i);
this.getContentPane().update(this.getGraphics());
//this.update(this.getGraphics());
} // for
} catch (Exception e) {}*/
}
}
PS: per questi di spazio ho cancellato una funzione, ma non dovrebbe compromettere la leggibilità del codice.