|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
[Java] Dubbio su Swing e JFrame
Dopo essermi letto un tutorial per creare interfacce grafiche con swing e aver realizzato una piccola finestra (JFrame) con relativa gestione di eventi mi è venuto un dubbio.
Volevo realizzare un'interfaccia a più livelli nel senso che premuto un pulsante della prima schermata l'interfaccia cambiasse (come se entrasse in una nuova pagina). Poi magari nella seconda finestra un pulsante che mi facesse ritornare nella prima interfaccia. Per fare una cosa del genere devo ideare un controllo del pulsante che mi chiuda la JFrame precedente e ne apra una nuova delle stesse dimensioni di quella vecchia e posizionata con l'angolo in alto a sinistra nello stesso punto? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Ciao,
in effetti, puoi fare cosi'. Comunque (e' una mia opinione personale), non mi sembra la modalita' piu' semplice e neppure graficamente la migliore. Potresti pensare a strutturare la tua interfaccia grafica in altro modo, per esempio usando una JTabbedPane, oppure dividere la tua schermata mediane JSplitPane e creare un tree sulla sinistra, oppure semplicemente aprendo un'altra JFrame/JDialog..... High Flying Sottovento
__________________
In God we trust; all others bring data |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Secondo me (se non è tua intenzione usare i tabs) dovresti creare vari composite dentro la finestra e poi rendere visibile solo quello che ti interessa facendo scomparire tutti gli altri.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
Ok, e se faccio, come dico io, che chiudo il JFrame e ne apro uno nuovo, c'è un metodo (e se si quale?) per capire dove effettivamente era posizionato il JFRame che ho chiuso? In effetti uno potrebbe avere spostato la finestra iniziale dalla posizione iniziale.
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
Quote:
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Quote:
ps. ti consiglio di lavorare con http://java.sun.com/j2se/1.5.0/docs/api/index.html aperto |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
High Flying Sottovento
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
Avete da indicarmi un tutorial o una guida per utilizzare le Component? Sul tutorial ufficiale non c'è.
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
guarda.. ecco un esempio puramente indicativo di quello che intendevo:
Codice:
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Prova extends JFrame {
private JPanel jContentPane1 = null;
private JPanel jContentPane2 = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
private JLabel jLabel1 = null;
private JLabel jLabel2 = null;
public static void main(String[] args) {
JFrame frame = new Prova();
frame.setVisible(true);
}
public Prova() {
super();
jLabel1 = new JLabel();
jLabel1.setText("schermata1:");
jButton1 = new JButton();
jButton1.setText("prossima schermata");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
jContentPane1.setVisible(false);
jContentPane2.setVisible(true);
}
});
jContentPane1 = new JPanel(new BorderLayout());
jContentPane1.add(jLabel1, BorderLayout.CENTER);
jContentPane1.add(jButton1, BorderLayout.SOUTH);
jContentPane1.setVisible(true);
jLabel2 = new JLabel();
jLabel2.setText("schermata2:");
jButton2 = new JButton();
jButton2.setText("precedente schermata");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
jContentPane2.setVisible(false);
jContentPane1.setVisible(true);
}
});
jContentPane2 = new JPanel(new BorderLayout());
jContentPane2.add(jLabel2, BorderLayout.CENTER);
jContentPane2.add(jButton2, BorderLayout.SOUTH);
jContentPane2.setVisible(false);
this.setSize(300, 200);
this.setContentPane(new JPanel());
this.setTitle("JFrame");
this.add(jContentPane1);
this.add(jContentPane2);
}
}
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
Ok, concetto recepito!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:01.



















