hinzufügen der JButtons auf ein JPanel das layout "GridLayout"

ich entwickle eine GUI , mit Hilfe der java Swing Bibliothek .Ich möchte hinzufügen, dass einige JButtons auf ein Jpanel, das ein Gridlayout als layout , aber ich habe ein problem , das panel-Größe ist über die gesamte Größe des Monitors , aber die JButtons' Größe kann unterschiedlich sein , ich kann hinzufügen, ein 3*3-array von Jbuttons an die Tafel , während ich eine 10 * 10-array, das panel , das problem ist, dass wenn ich einen 3*3 , die jbuttons wäre so groß wie besetzen die gesamte Anzeige auch das JPanel auf dem die aktuelle JPanel (mit dem Namen Optionen ), was soll ich tun, um eine Konstante Größe für JButtons, dass Ihre Größe nicht verändert, auch wenn Sie 2 Jbuttons ( die jetzt nimmt das ganze display) ( die setSize-Funktion wird nicht funktionieren , und ich möchte das layout ein GridLayout , nicht null ) , hier einige Teile des Codes :

public class Edit extends JFrame{   
public Edit ()
{
    width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
    height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
    newer = new JButton(new ImageIcon(b)) ;
    done = new JButton(new ImageIcon(f)) ;
    savior = new JButton(new ImageIcon(d)) ;
    undo = new JButton(new ImageIcon(h)) ;
    newer.setSize(200, 60);
    done.setSize(200, 60);
    savior.setSize(200, 60);    
    undo.setSize(200, 60);
    options = new JPanel();
    options.setSize(width , 100);
    options.setLayout(new GridLayout(1,5,(width- 1000)/6,20)) ;
    options.add(newer);
    options.add(done);
    options.add(savior);
    options.add(undo);
    options.setBackground(Color.magenta);
    options.add(selector);
    this.setExtendedState(this.MAXIMIZED_BOTH);
    this.setUndecorated(true);
    this.setVisible(true);
    view = new JPanel();
    regions = new JButton[3][3];
    view.setSize(width, height - 100) ; 
    view.setLayout(new GridLayout(3,3));
    for(int i=0;i<3;i++)
                for(int j=0;j<3;j++)
        {
                regions[i][j] = new JButton(); 
                    regions[i][j].setSize(80,80) ;
            view.add(regions[i][j]);
            }
    editPhase = new JPanel();
    editPhase.setLayout(null);
    editPhase.add(options,BorderLayout.NORTH);
    editPhase.add(view,BorderLayout.SOUTH);
    this.add(editPhase);
    }
}

vielen Dank im Voraus .

  • zuerst von allen, sollten Sie aufrufen setPreferredSize(...), nicht setSize(...). Sekunde alle, vielleicht könnten Sie jede Taste auf einem panel für seine bevorzugte Größe, und dann hinzufügen, dass die angegebene region. es werden daher nur die JPanel wird in der Größe verändert werden, und nicht die JButton?
  • Warum nicht mit einem leistungsstarken/nützlich layout (ich bevorzuge JGoodies, viele empfehlen Mig Layout oder Tabellen-Layout)?
InformationsquelleAutor | 2011-07-06
Schreibe einen Kommentar