|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2015
Messaggi: 1
|
[Java]Problema Interfaccia grafica
Salve a tutti ho finito di studiare da poco java e ora sto iniziando a studiare le interfacce grafiche.Volevo fare un piccolo programmino di quiz con domande e risposte.Il mio problema e questo:
-Creo la classe main che contiene la schermata iniziale di benvenuto e un pulsante che dovrebbe passare al panel successivo che contiene le domande. -nel main creo il frame contenente un panel con al suo interno appunto il pulsante -Creo un altra classe che contiene che la prima schermata di domande e risposte(Naturalmente questa classe e un panel) il mio problema e che non so come far cambiare il panel che sta nel main con il panel che contiene le domande e risposte.Su internet consigliano il CardLayout e utilizzando quello non so come richiamare nel CardLayout la classe delle domande. Se invece faccio tutto un codice,cioè creo un unico e grande codice nel main, e utilizzo il CardLayout il programma funziona.Secondo me il problema e cosa inserire actionPerformed Scusate se non sono stato molto chiaro ma spero che avete capito.Ecco il codice delle 2 classi CLASSE QUIZ(contenente il main) Codice:
public class Quiz extends JFrame{
private JFrame frame;
private Container contenitore;
private CardLayout cardlayout;
private JPanel panel;
private JPanel p1;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Quiz window = new Quiz();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Quiz()
{
frame = new JFrame("Quiz");
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contenitore=frame.getContentPane();
contenitore.setVisible(true);
initialize();
}
private void initialize()
{
cardlayout=new CardLayout(); //Creazione CardLayout
panel = new JPanel(cardlayout); //Assegno al JPanel il
CardLayout
p1 = new JPanel();
panel.add(p1);
JLabel lblBenvenuto = new JLabel(" Benvenuto");
p1.add(lblBenvenuto);
panel.setBackground(Color.GREEN); //Imposto lo sfondo per
p1.setBackground(Color.BLUE); //capire quali panel sia
frame.setBackground(Color.MAGENTA); //stato aggiunto dopo il
//click del bottone
contenitore.add(panel);
bottone();
}
private void bottone()
{
JButton Bottone = new JButton("Clicca per iniziare");
p1.add(Bottone);
Bottone.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
panel.remove(p1);
PaginaQuiz paginaQuiz=new PaginaQuiz();
paginaQuiz.setBounds(100, 100, 450, 300);
paginaQuiz.setBackground(Color.YELLOW);
panel.add(paginaQuiz);
panel.repaint();
contenitore.revalidate();
}
});
}
}
Codice:
public class PaginaQuiz extends JPanel {
private JPanel contentPane;
private CardLayout cardLayout;
public PaginaQuiz()
{
initialize();
}
private void initialize() {
setBounds(100, 100, 450, 300);
JPanel panel = new JPanel();
SpringLayout sl_panel = new SpringLayout();
panel.setLayout(sl_panel);
//Creazione label per la Domanda
JLabel lblNewLabel = new JLabel("Domanda");
sl_panel.putConstraint(SpringLayout.NORTH, lblNewLabel, 36, SpringLayout.NORTH, panel);
panel.add(lblNewLabel);
//Creazione label per le Risposte
JButton btnRisposta = new JButton("risposta 1");
sl_panel.putConstraint(SpringLayout.WEST, lblNewLabel, 0, SpringLayout.WEST, btnRisposta);
btnRisposta.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//qui dovrei accedere a un altro panel se la
//risposta e errata o corretta
}
});
panel.add(btnRisposta);
Ultima modifica di Moltack : 27-04-2015 alle 21:17. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Il codice che hai postato non e' nemmeno compilabile, anzi non e' nemmeno completo.
Forse potresti renderlo almeno compilabile, cosi' che si possa lanciare ed avere un'idea di cosa hai fatto e di cosa vorresti ottenere, semplificando il lavoro di chi vorrebbe aiutarti....
__________________
In God we trust; all others bring data |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:55.



















