Ragazzi,
mi sto rompendo la testa nel tentare di fare la finestra come questa:![]()
Non riesco ad allineare i componenti nella maniera corretta: ho provato ad utilizzare tutti i layout possibili.
Qualcuno mi può dare una mano?
Grazie
Ragazzi,
mi sto rompendo la testa nel tentare di fare la finestra come questa:![]()
Non riesco ad allineare i componenti nella maniera corretta: ho provato ad utilizzare tutti i layout possibili.
Qualcuno mi può dare una mano?
Grazie
![]()
guarda io n ho cpito bene cosa vuoi fare,prova così....poi te la aggiusti a modo tuo...
codice:java.awt.*; import javax.swing.*; public class asd extends JFrame { private JButton _button1 = new JButton("nord"); private JButton _button2 = new JButton("sud"); private JButton _button4 = new JButton("ovest"); private JButton _button5 = new JButton("centro"); public asd() { setTitle("Come usare BorderLayout"); setSize(500, 330); // faccio terminare il programma al click sulla 'x' setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // riferimento al contenitore principale di una finestra swing Container c = getContentPane(); // imposto il BorderLayout c.setLayout(new BorderLayout(2,2)); _button4.setPreferredSize(new Dimension(150,100)); //gestisci la grandezza del bottone o di qualsiasi cosa c.add(_button1, BorderLayout.NORTH); c.add(_button2, BorderLayout.SOUTH); c.add(_button4, BorderLayout.LINE_START); c.add(_button5, BorderLayout.CENTER); // rendo visibile la finestra setVisible(true); } public static void main(String[] args) { new asd(); } }spero di esserti stato utile..
Io vorrei fare una finestra come nell'immagine allegata...nè più nè meno. Ho provato ad utilizzare BorderLayout, gridlayout e flowlayout ma gli oggetti no nsi allineano come dovrebbero.Originariamente inviato da pat87
![]()
guarda io n ho cpito bene cosa vuoi fare,prova così....poi te la aggiusti a modo tuo...
import java.awt.*;
import javax.swing.*;
public class asd
extends JFrame
{
private JButton _button1 = new JButton("nord");
private JButton _button2 = new JButton("sud");
private JButton _button4 = new JButton("ovest");
private JButton _button5 = new JButton("centro");
public asd()
{
setTitle("Come usare BorderLayout");
setSize(500, 330);
// faccio terminare il programma al click sulla 'x'
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// riferimento al contenitore principale di una finestra swing
Container c = getContentPane();
// imposto il BorderLayout
c.setLayout(new BorderLayout(2,2));
_button4.setPreferredSize(new Dimension(150,100)); //gestisci la grandezza del
bottone o di qualsiasi cosa
c.add(_button1, BorderLayout.NORTH);
c.add(_button2, BorderLayout.SOUTH);
c.add(_button4, BorderLayout.LINE_START);
c.add(_button5, BorderLayout.CENTER);
// rendo visibile la finestra
setVisible(true);
}
public static void main(String[] args)
{
new asd();
}
}
spero di esserti stato utile..
Giusto in questo post manca il link della finestra:![]()
io con questi layout ho risolto in questo modo:
ho creato una classe myframe che al suo interno crea 25 pannelli
in questo modo
5 al sud
5 ad est
5 ad ovest
5 al centro
5 al nord
con un immagine che ho creato,
http://picasaweb.google.it/AgostinoM...59640911018898
mi controllo l'oggetto a quale posizione del frame deve essere allocato, e poi con un metodo della classe inserisco l'oggetto
esempio:
add(int numero_pannello, Object oggetto);
con lo stesso modo posso settare il layout di tale pannello
setLayoutPanel(int numero_pannello, LayoutManager type_Layout)
se vuoi il codice non ci sono problemi
Agos
scusami internet n mi caricava l'immagine percio n vedendola pensavo volessi fare una finestra come quella in cui era scritto il messaggio...cmq prova a fare come ti dice agos,anche se 25 pannelli sn tanti secondo me...
![]()
Non si fa prima ad usare un GridBagLayout a questo punto?Originariamente inviato da agostinomiranda
http://picasaweb.google.it/AgostinoM...59640911018898
mi controllo l'oggetto a quale posizione del frame deve essere allocato, e poi con un metodo della classe inserisco l'oggetto
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Grazie! Si il codice lo prendo molto volentieri.Originariamente inviato da itsrv
Giusto in questo post manca il link della finestra:![]()
Questo è un esercizio del corso di progettazione del sw della facoltà di ingegneria...
Credo che non si possano usare i GridBagLayout ( ma solo GridLayout, FlowLayout e BordeLayout) e forse la soluzione a 25 pannelli è l'unica applicabile anche se essendo il tempo a disposizione è di due ore (e in questo tempo si deve fare una applicazione RMI) mi chiedo quanto tempo occorre per fare questa finestra.
Comunque grazie molte.
@pat87: quando posti il codice, ricordati di includerlo nei due tag [code] e [/code] previsti dal forum e dal regolamento.
Ho modificato io il tuo post.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
scusa ma la classe bigLayoutManager non la conosco
comunque
per quando riguarda l'immagine non sò come farvala vedere.
Il codice della classe è questo:
codice:import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.LayoutManager; import java.awt.Toolkit; import javax.swing.JFrame; import javax.swing.JPanel; public class MyFrame { private double altezzaSchermo, larghezzaSchermo, larghezzaFrame, altezzaFrame, posx, posy; private JPanel [] panel; private JFrame frame; public MyFrame(String titoloFinestra) { //creo il frame frame=new JFrame(titoloFinestra); // imposta il titolo della finestra //imposto la dimensione e il centro this.setCenterAndSize3_4(); //inizializzo i pannelli this.inizializzaPannelli(); //aggiungo i pannelli this.AddPannelli(); //imposto l'azione quando si preme la crocetta di chiusura sul frame frame.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); } private void AddPannelli() { //Aggiunge i pannelli seguendo uno schema frame.add(panel[0]); //aggiunto pannello principale panel[0].setLayout(new BorderLayout()); panel[0].add(panel[28],BorderLayout.CENTER); panel[28].setLayout(new BorderLayout()); panel[0].add(panel[26],BorderLayout.NORTH); panel[26].setLayout(new BorderLayout()); panel[0].add(panel[27],BorderLayout.WEST); panel[27].setLayout(new BorderLayout()); panel[0].add(panel[29],BorderLayout.EAST); panel[29].setLayout(new BorderLayout()); panel[0].add(panel[30],BorderLayout.SOUTH); panel[30].setLayout(new BorderLayout()); panel[28].add(panel[11],BorderLayout.NORTH); panel[28].add(panel[12],BorderLayout.WEST); panel[28].add(panel[13],BorderLayout.CENTER); panel[28].add(panel[14],BorderLayout.EAST); panel[28].add(panel[15],BorderLayout.SOUTH); panel[26].add(panel[1],BorderLayout.NORTH); panel[26].add(panel[2],BorderLayout.WEST); panel[26].add(panel[3],BorderLayout.CENTER); panel[26].add(panel[4],BorderLayout.EAST); panel[26].add(panel[5],BorderLayout.SOUTH); panel[27].add(panel[6],BorderLayout.NORTH); panel[27].add(panel[7],BorderLayout.WEST); panel[27].add(panel[8],BorderLayout.CENTER); panel[27].add(panel[9],BorderLayout.EAST); panel[27].add(panel[10],BorderLayout.SOUTH); panel[29].add(panel[16],BorderLayout.NORTH); panel[29].add(panel[17],BorderLayout.WEST); panel[29].add(panel[18],BorderLayout.CENTER); panel[29].add(panel[19],BorderLayout.EAST); panel[29].add(panel[20],BorderLayout.SOUTH); panel[30].add(panel[21],BorderLayout.NORTH); panel[30].add(panel[22],BorderLayout.WEST); panel[30].add(panel[23],BorderLayout.CENTER); panel[30].add(panel[24],BorderLayout.EAST); panel[30].add(panel[25],BorderLayout.SOUTH); } private void inizializzaPannelli() { //inizializzazione di tutti i pannelli panel = new JPanel[31]; for(int i=0;i<31;i++) { panel[i] = new JPanel(); panel[i].setBackground(Color.WHITE); } } private void setCenterAndSize3_4() //crea un frame della dimensioni tre quarti dello schermo { //Frame //Mi ricavo le dimensioni dello schermo Toolkit tk = frame.getToolkit(); altezzaSchermo=tk.getScreenSize().getHeight(); larghezzaSchermo=tk.getScreenSize().getWidth(); //Mi ricavo le dimensioni del frame //li faccio prima di un quarto dello schermo larghezzaFrame=larghezzaSchermo/2; altezzaFrame=altezzaSchermo/2; //adesso li aumento della metà di un quarto larghezzaFrame+=larghezzaFrame/2; altezzaFrame+=altezzaFrame/2; //imposto le dimensioni del frame frame.setSize((int)larghezzaFrame,(int)altezzaFrame); //Adesso ricavo la locazione del frame e lo localizzo posx = larghezzaSchermo/2 - larghezzaFrame/2; posy = altezzaSchermo/2 - altezzaFrame/2; frame.setLocation((int)posx, (int)posy); frame.setResizable(false); //Non ridimensionabile } //Aggiunge il componente al pannello nmPanel public Boolean addObject(int nmPanel,Component oggetto) { if(nmPanel<1 || nmPanel >25) return false; //oggetto non aggiunto panel[nmPanel].add(oggetto); return true; //oggetto aggiunto } //Setta il layout del pannello nmPanel public Boolean setLayoutPane(int nmPanel,LayoutManager type_Layout) { if(nmPanel<1 || nmPanel >25) return false; //L'ayout non aggiornato panel[nmPanel].setLayout(type_Layout); return true; //L'ayout Aggiornato } public boolean setBackground(int nmPanel,Color colore) { if(nmPanel<1 || nmPanel >25) return false; //colore stanza non aggiornato panel[nmPanel].setBackground(colore); return true; //colore Aggiornato } public void setVisible(Boolean flag) { frame.setVisible(flag); } }
Agos