|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2012
Messaggi: 1
|
[JAVA] Problema con GridBagLayout
Ciao a tutti,sono nuovo del forum, ho un problema con il GridBagLayout.
In sostanza devo mappare il contenuto di una matrice di stringhe in un pannello contenente una matrice di JLabel.Il pannello e' contenuto in una JScrollPane e il layout e' il GridBagLayout.Questo e' il codice del costruttore e dei metodi predisponi e disegna: public Gant(String[][]m){ this.m=m; this.setSize((t.getScreenSize().width+500)/2, (t.getScreenSize().height+400)/2); this.setResizable(false); mypanel=new JPanel(); mypanel.setLayout(null); mypanel.setBounds(this.getX(), this.getY(),this.getWidth(), this.getHeight()); this.setContentPane(mypanel); layout = new GridBagLayout(); lim = new GridBagConstraints(); pannelloGant = new JPanel(); pannelloGant.setLayout(layout); scrollpane=new JScrollPane(pannelloGant); scrollpane.setBounds(30, 30, this.getWidth()-90, this.getHeight()-300 ); scrollpane.setVisible(true); scrollpane.setViewportView(pannelloGant); mypanel.add(scrollpane); predisponi(m); disegna(m); mypanel.repaint(); this.setVisible(true); } public void predisponi(String[][]sol){ ma=new JLabel[sol.length][sol[0].length]; Dimension d=pannelloGant.getSize(); if(d.width<sol[0].length*50){ d.width=(sol[0].length*50); pannelloGant.setPreferredSize(d); pannelloGant.repaint(); } if(d.height<sol.length*50){ d.height=(sol.length*50); pannelloGant.setPreferredSize(d); pannelloGant.repaint(); } for (int i = 0; i < ma.length; ++i) { for (int j = 0; j < ma[0].length; ++j) { ma[i][j]=new JLabel(new ImageIcon(""),JLabel.CENTER); ma[i][j].setOpaque(true); ma[i][j].setBorder(BorderFactory.createEtchedBorder()); ma[i][j].setBackground(Color.black); lim.gridx = j; lim.gridy = i; lim.weightx = 1; lim.weighty = 1; lim. fill = GridBagConstraints.BOTH; lim.insets.top = 0; lim.insets.bottom = 0; lim.insets.left = 0; lim.insets.right = 0; layout.setConstraints(ma[i][j], lim); pannelloGant.add(ma[i][j],0); pannelloGant.repaint(); } } } public void disegna(String[][]sol){ for (int i=0;i<sol.length;i++){ for(int j=0;j<sol[0].length;j++){ if(sol[i][j].equals("*")) ma[i][j].setBackground(Color.yellow); } } } Come si vede dall'immagine quando il numero di colonne*50 supera l'ampiezza del pannello viene disegnato (al bordo sinistro e destro del pannello) lo spazio bianco della jScrollpane. Non riesco a capire perche' il GridBagLayout con uno JscrollPane non riempie tutto il pannello, spero possiate spiegarmi qual'e' il problema. Grazie |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:27.



















