swing
Utilizzo di Swing per interfacce utente grafiche
Ricerca…
Osservazioni
Chiudere l'applicazione alla chiusura della finestra
È facile dimenticare di chiudere l'applicazione quando la finestra è chiusa. Ricorda di aggiungere la seguente riga.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
Creazione di una finestra vuota (JFrame)
Creare il JFrame
Creare una finestra è facile. Devi solo creare un JFrame
.
JFrame frame = new JFrame();
Intitolando la finestra
Potresti voler dare un titolo alla tua finestra. Puoi farlo passando una stringa quando crei JFrame
o chiamando frame.setTitle(String title)
.
JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");
Impostazione della dimensione della finestra
La finestra sarà il più piccola possibile quando è stata creata. Per ingrandirlo, puoi impostarne le dimensioni in modo esplicito:
frame.setSize(512, 256);
Oppure puoi avere la dimensione del frame stessa in base alla dimensione del suo contenuto con il metodo pack()
.
frame.pack();
I metodi setSize()
e pack()
si escludono a vicenda, quindi utilizzare uno o l'altro.
Cosa fare alla fine della finestra
Si noti che l'applicazione non si chiuderà quando la finestra è stata chiusa. Puoi chiudere l'applicazione dopo che la finestra è stata chiusa dicendo a JFrame
di farlo.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
In alternativa, puoi dire alla finestra di fare qualcos'altro quando è chiuso.
WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action
Creazione di un riquadro del contenuto
Un passaggio facoltativo consiste nel creare un riquadro del contenuto per la tua finestra. Questo non è necessario, ma se vuoi farlo, crea un JPanel
e chiama frame.setContentPane(Component component)
.
JPanel pane = new JPanel();
frame.setContentPane(pane);
Mostrando la finestra
Dopo averlo creato, dovrai creare i tuoi componenti, quindi mostrare la finestra. Mostrare la finestra è fatto come tale.
frame.setVisible(true);
Esempio
Per quelli di voi che amano copiare e incollare, ecco un esempio di codice.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
frame.setVisible(true); //Show the window
Aggiunta di componenti
Un componente è una sorta di elemento dell'interfaccia utente, ad esempio un pulsante o un campo di testo.
Creazione di un componente
La creazione di componenti è quasi identica alla creazione di una finestra. Invece di creare un JFrame
, tuttavia, lo crei. Ad esempio, per creare un JButton
, fai quanto segue.
JButton button = new JButton();
Molti componenti possono avere parametri passati a loro una volta creati. Ad esempio, a un pulsante può essere dato del testo da visualizzare.
JButton button = new JButton("Super Amazing Button!");
Se non si desidera creare un pulsante, è possibile trovare un elenco di componenti comuni in un altro esempio in questa pagina.
I parametri che possono essere passati a loro variano da un componente all'altro. Un buon modo per verificare ciò che possono accettare è guardando i paramter all'interno del tuo IDE (se ne usi uno). Le scorciatoie predefinite sono elencate di seguito.
- IntelliJ IDEA - Windows / Linux:
CTRL + P
- IntelliJ IDEA - OS X / macOS:
CMD + P
- Eclipse:
CTRL + SHIFT + Space
- NetBeans:
CTRL + P
Mostrando il componente
Dopo che un componente è stato creato, in genere devi impostare i suoi parametri. Dopo, devi metterlo da qualche parte, ad esempio sul tuo JFrame
, o sul pannello dei contenuti, se ne hai creato uno.
frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever
Esempio
Ecco un esempio di creazione di una finestra, impostazione di un riquadro del contenuto e aggiunta di un pulsante.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane
frame.setVisible(true); //Show the window
Impostazione dei parametri per i componenti
I componenti hanno vari parametri che possono essere impostati per loro. Variano da componente a componente, quindi un buon modo per vedere quali parametri possono essere impostati per i componenti è iniziare a digitare componentName.set
e lasciare che il completamento automatico del tuo IDE (Se si utilizza un IDE) suggerisca metodi. Il collegamento predefinito in molti IDE, se non viene visualizzato automaticamente, è CTRL + Space
.
Parametri comuni condivisi tra tutti i componenti
Descrizione | Metodo |
---|---|
Imposta la dimensione più piccola che può essere il componente (solo se il gestore di layout onora la proprietà minimumSize) | setMinimumSize(Dimension minimumSize) |
Imposta la dimensione massima che può essere il componente (solo se il gestore di layout onora la proprietà maximumSize) | setMaximumSize(Dimension maximumSize) |
Imposta la dimensione perferita del componente (solo se il gestore del layout onora la proprietà preferredSize) | setPreferredSize(Dimension preferredSize) |
Mostra o nasconde il componente | setVisible(boolean aFlag) |
Imposta se il componente deve rispondere all'input dell'utente | setEnabled(boolean enabled) |
Imposta il carattere del testo | setFont(Font font) |
Imposta il testo del suggerimento | setToolTipText(String text) |
Imposta il Colore sfondo del componente | setBackground(Color bg) |
Imposta il colore di primo piano (colore del carattere) del componente | setForeground(Color bg) |
Parametri comuni in altri componenti
Componenti comuni | Descrizione | Metodo |
---|---|---|
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField | Imposta il testo visualizzato | setText(String text) |
JProgressBar , JScrollBar , JSlider , JSpinner | Imposta un valore numerico tra i valori minimo e massimo del componente | setValue(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Imposta è il più piccolo valore possibile che può essere la proprietà value | setMinimum(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Set è il più grande valore possibile che può essere la proprietà value | setMaxmimum(int n) |
JCheckBox , JToggleBox | Imposta se il valore è vero o falso (Es .: Se una casella di controllo è selezionata?) | setSelected(boolean b) |
Componenti comuni
Descrizione | Classe |
---|---|
Pulsante | JButton |
casella di controllo | JCheckBox |
Menu a discesa / casella combinata | JComboBox |
Etichetta | JLabel |
Elenco | JList |
Barra dei menu | JMenuBar |
Menu in una barra dei menu | JMenu |
Articolo in un menu | JMenuItem |
Pannello | JPanel |
Barra di avanzamento | JProgressBar |
Pulsante di scelta | JRadioButton |
Barra di scorrimento | JScrollBar |
Slider | JSlider |
Spinner / Selezione numero | JSpinner |
tavolo | JTable |
Albero | JTree |
Area di testo / campo di testo multilinea | JTextArea |
Campo di testo | JTextField |
Barra degli strumenti | JToolBar |
Realizzare interfacce utente interattive
Avere un pulsante è tutto buono e buono, ma che senso ha se cliccarlo non fa nulla? ActionListener
vengono usati per dire al tuo pulsante, o ad altri componenti di fare qualcosa quando è attivato.
L'aggiunta di ActionListener
viene eseguita come tale.
buttonA.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Code goes here...
System.out.println("You clicked the button!");
}
});
Oppure, se stai usando Java 8 o successivo ...
buttonA.addActionListener(e -> {
//Code
System.out.println("You clicked the button!");
});
Esempio (Java 8 e versioni successive)
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);
JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
//Code goes here
System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);
frame.setVisible(true); //Show the window
Organizzazione del layout dei componenti
L'aggiunta di componenti uno dopo l'altro determina un'interfaccia utente difficile da utilizzare, poiché i componenti sono tutti da qualche parte . I componenti sono ordinati dall'alto verso il basso, ogni componente in una "fila" separata.
Per ovviare a questo e fornirti come sviluppatore la possibilità di LayoutManager
facilmente di componenti di layout, Swing dispone di LayoutManager
.
Questi LayoutManager sono trattati in modo più approfondito in Introduzione ai gestori di layout e negli argomenti di Layout Manager separati: