Ciao a tutti,
come posso centrare un JOptionPane rispetto al top levele container (JFrame) in modo tale che esso risulti centrato rispetto ad esso per una qualsiasi risoluzione di schermo impostata ?
Grazie
Ciao a tutti,
come posso centrare un JOptionPane rispetto al top levele container (JFrame) in modo tale che esso risulti centrato rispetto ad esso per una qualsiasi risoluzione di schermo impostata ?
Grazie
Ultima modifica di andbin; 23-04-2015 a 19:19
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Si infatti:
se considero un JButton che fa questo:
uso "this" perchè il metodo relativo al JButton si trova all'interno della classe del top level container.codice:private void infoActionPerformed(java.awt.event.ActionEvent evt) { // Info iniziale try { ImageIcon icon = ImageLoader.loadIcon("logo.png"); JOptionPane.showMessageDialog(this,.... ....
Ma se il jOptionPanel si trova in un'altra classe ? devo istanziare il top level container per fare in modo che sia rispetto ad esso ?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Mah .. il punto non è tanto passare un reference ad un'altra classe. Questo, in un modo o nell'altro generalmente si fa, insomma "tecnicamente" è fattibile. Le vere questioni sono a livello concettuale e appunto di "design" generale.
Innanzitutto perché in un'altra classe hai bisogno di un reference ad un altro frame solo per aprire una message box? Quest'altra classe cosa è? È anch'essa un frame(/dialog) oppure un "bean" o una classe di utilità? Se è un'altra finestra, che relazione ha con quella che vuoi usare di riferimento per l'option pane?
Le puoi sapere solo tu, che hai la visione completa della applicazione. Questi aspetti di design comunque non sono sempre "facili" e si acquisiscono con il tempo, studiando anche la OOP e i design pattern, sviluppando e anche ... sbagliando. Passare reference/valori di qua e di là a casaccio o peggio "aprire" l'accesso a campi interni o fare improbabili invocazioni in cascata tipo altroFrame.getPannelloX().getComponenteY().getXyz( ) e roba simile, generalmente non sono la soluzione e rischiano solo di ingarbugliare di più il design.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Ciao andbin, ho bisogno del reference al frame principale perchè la classe che ne ha bisogno, si occupa della procedura di ingresso dei dati da parte dell'utente. Non si tratta solo di una message box ma di una vera e propria interazione del software con l'utente per inserire i dati.
Ma non ho ancora capito come fare...come faccio a referenziare un frame che è proprio il top level container ?
Ho fatto così. Ho passato il frame principale al metodo della classe che si occupa di ciò:
e poi:codice:ProceduraInput.proceduraIngressi(continente, PVE.this);
codice:... public static void proceduraIngressi(String continent, JFrame rif) throws IOException, Exception { ... ... citta = JOptionPane.showInputDialog(rif,"Enter the name of the city");
Vedo che è public static ... quindi proprio solo una "utilità" richiamabile da qualunque parte. Cioè è qualcosa di abbastanza generico e non precisamente contestualizzato nell'intera applicazione. Però vedo anche che ha tipo di ritorno void e quindi ciò che chiede (quel citta) lo devi per forza mettere da qualche parte sicuramente altrettanto "static". E questo mi porta alla conclusione che il "design" generale potrebbe non essere il massimo ....![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet