|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2011
Messaggi: 1
|
[JAVA]Piccolo Menù
Ciao a tutti ^_^ appena iscritta
Sto creando un piccolo jframe per settare i caratteri di un editor di testo da implementare per un'esame. Simile a quello di notepad, ma più semplice. Con 3 jlist per scegliere dimensione, stile e font, 3 etichette, una label che mostri come viene modificato il carattere e i tasti OK e Annulla. Sono un po scarsa con la grafica, infatti quando cambio la dimensione del carattere della label i pannelli si sovrappongono, e in più non riesco a modificare la dimensione delle jlist. Questo è il codice che ho scritto, probabilmente sarà pieno di errori. Dove sbaglio? listaDimensioni = new JList(); listaFont = new JList(); listaEffetti = new JList(); scroll1 = new JScrollPane(listaFont); scroll2 = new JScrollPane(listaDimensioni); scroll3 = new JScrollPane(listaEffetti); pannelloScroll = new JPanel(new GridLayout(1, 3, 30, 20)); pannelloScrollEsterno = new JPanel(); scroll1.setPreferredSize(new Dimension(90, 100)); scroll2.setPreferredSize(new Dimension(30, 100)); scroll3.setPreferredSize(new Dimension(90, 100)); listaFont.setListData(font); listaDimensioni.setListData(dimensioni); listaEffetti.setListData(effetti); pannelloScroll.add(scroll1); pannelloScroll.add(scroll2); pannelloScroll.add(scroll3); pannelloScrollEsterno.add(pannelloScroll); pannelloEtichette = new JPanel(new GridLayout(1, 3, 20, 100)); tipoCarattere = new JLabel(" Tipo di carattere"); stile = new JLabel(" Punti"); punti = new JLabel(" Stile "); pannelloEtichette.add(tipoCarattere); pannelloEtichette.add(stile); pannelloEtichette.add(punti); pannelloEtichette.setSize(10, 10); pannelloEsempio = new JPanel(new GridLayout(2, 3, 10, 50)); pannelloEsempio2 = new JPanel(); pannelloEsempio3 = new JPanel(); pannelloEsempio4 = new JPanel(); //pannelloEsempio2, 3 e 4 sono pannelli vuoti creati come riempimento per //far stare i pulsanti e l'etichetta in determinati punti esempio = new JLabel("Esempio"); ok = new JButton("Ok"); annulla = new JButton("Annulla"); pannelloEsempio.add(pannelloEsempio2); pannelloEsempio.add(esempio); pannelloEsempio.add(pannelloEsempio3); pannelloEsempio.add(pannelloEsempio4); pannelloEsempio.add(ok); pannelloEsempio.add(annulla); menuCarattere = new JFrame("Menù Carattere"); content.setSize(100, 100); content.add(pannelloScrollEsterno, BorderLayout.NORTH); content.add(pannelloEtichette, BorderLayout.CENTER); content.add(pannelloEsempio, BorderLayout.SOUTH); menuCarattere.getContentPane().add(content); |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il codice è ok. La sovrapposizione deriva dal layout manager del contenitore "pannelloScrollEsterno":
pannelloScrollEsterno = new JPanel(); Se usi un GridLayout: pannelloScrollEsterno = new JPanel(new GridLayout(1, 1)); ottieni una certa stabilità. In verità non c'è sovrapposizione, semplicemente il flow layout non ridimensiona i figli quando lo spazio scarseggia quindi il contenuto appare tagliato. Sempre usando il GridLayout per pannelloScrollEsterno, ottieni anche il ridimensionamento delle liste con l'espansione del contenitore. Col FlowLayout i componenti si attestano sulla dimensione preferita e lì restano, col grid si adattano. Probabilmente le etichette le vuoi in testa, quindi dirai: content.add(pannelloScrollEsterno, BorderLayout.CENTER); content.add(pannelloEtichette, BorderLayout.NORTH); content.add(pannelloEsempio, BorderLayout.SOUTH); La gestione di pannelloEsempio ha una sua originalità e può anche andare. Ottieni lo stesso effetto senza usare dei "segnaposto" se usi un BorderLayout con al centro l'etichetta e in fondo un secondo JPanel con un FlowLayout (TRAILING) e i due pulsanti. Assegna all'etichetta esempio una dimensione preferita, anche minima, in modo tale che non causi il ridimensionamento della gui quando gli rifili un font molto grande. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:52.



















