|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
[JAVA] Problemi di layout
Ciao a tutti
![]() Codice:
package altro; import java.awt.*; import javax.swing.*; public class Altro { public static void main(String [] args){ JFrame frame=new JFrame("Programma"); frame.setSize(400,400); frame.setVisible(true); frame.setContentPane(new ContentPane()); } } class ContentPane extends JPanel{ private JPanel pannello; JButton bott1; JButton bott2; private void init(){ bott1=new JButton("Prova"); bott2=new JButton("Ri-prova"); add(bott1, BorderLayout.WEST); add(bott2, BorderLayout.CENTER); } public ContentPane(){ try{init();} catch (Exception e){e.printStackTrace();} } } |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
UP!!
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Due risorse utili che ti saranno di grande aiuto:
- Trail: Graphical User Interfaces - Trail: Creating a GUI with JFC/Swing Con un investimento di 3-4 ore puoi partire in modo semplice con il piede giusto ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il codice è corretto, nel senso che fa quel che c'è scritto.
ContentPane è un JPanel. Un JPanel ha come LayoutManager predefinito un FlowLayout. FlowLayout distribuisce i componenti su righe orizzontali. In pratica li affianca uno all'altro in ordine di inserimento e quando non c'è più spazio sulla riga "va a capo". Quando in "init" scrivi: add(bott1, BorderLayout.WEST); add(bott2, BorderLayout.CENTER); inserisci i componenti bott1 e bott2 in ContentPane e quando ContentPane diventerà visibile quei due pulsanti riceveranno la posizione e la dimensione stabilite da FlowLayout. Le due costanti WEST e CENTER sono semplicemente ignorate: quelle avrebbero effetto se il LayoutManager fosse BorderLayout. es. se scriviamo: Codice:
private void init() { setLayout(new BorderLayout()); bott1 = new JButton("Prova"); bott2 = new JButton("Ri-prova"); add(bott1, BorderLayout.WEST); add(bott2, BorderLayout.CENTER); } Nel main metti "frame.setContentPane(new ContentPane())" prima di setVisible(true) altrimenti incappi in problemi di convalida del Layout. Se lo metti dopo il setVisible allora devi far seguire la mutazione del pannello del contenuto da un frame.validate(), frame.repaint(). Il contenuto del metodo main dovrebbe poi essere affidato all'EDT ma è un'altra storia.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:56.