2013-07-31 9 views
5

Ich versuche, eine GUI für eine Bankanwendung in JAVA zu machen. Das Verwenden von absolutem Layout für meinen Frame ist so einfach, alles zu erstellen, wenn ich WindowBuilder in Eclipse verwende, aber das Problem damit ist, wenn ich die Größe des Frames ändere. Aus diesem Grund habe ich mich für gridBagLayout entschieden, wo ich gewichtx/y verwenden kann, um meine Arbeit zu erleichtern. Ich habe irgendwie vergessen, dieses Layout richtig zu benutzen, also bin ich bei meinem ersten Versuch, ein JPanel in meinem gridBagLayout-Hauptfenster hinzuzufügen, hängengeblieben.gridBagLayout vs absoluteLayout

Dies ist, was ich (made in absolutem Layout) erreichen will:

enter image description here

Und das ist, was ich (in GridBagLayout gemacht):

enter image description here

Wenn jemand kann mir zeigen, was ich ändern/hinzufügen muss, wenn ich das flowLayout-Panel zum ersten Mal hinzufüge. Im Grunde der weiße Raum der ersten Zelle - ich will es loswerden und kontrollieren! Hier

ist ein Code:

setBackground(new Color(255, 255, 255)); 
    GridBagLayout gridBagLayout = new GridBagLayout(); 
    gridBagLayout.columnWidths = new int[]{0, 0}; 
    gridBagLayout.rowHeights = new int[]{0, 0}; 
    gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; 
    gridBagLayout.rowWeights = new double[]{1.0, Double.MIN_VALUE}; 
    setLayout(gridBagLayout); 

    JPanel panel = new JPanel(); 
    FlowLayout flowLayout = (FlowLayout) panel.getLayout(); 
    flowLayout.setVgap(15); 
    flowLayout.setHgap(15); 
    flowLayout.setAlignment(FlowLayout.LEFT); 
    panel.setBackground(new Color(51, 102, 204)); 
    GridBagConstraints gbc_panel = new GridBagConstraints(); 
    gbc_panel.anchor = GridBagConstraints.NORTH; 
    gbc_panel.fill = GridBagConstraints.HORIZONTAL; 
    gbc_panel.gridx = 0; 
    gbc_panel.gridy = 0; 
    add(panel, gbc_panel); 

    JLabel label = new JLabel("European Bank"); 
    label.setForeground(Color.WHITE); 
    label.setFont(new Font("Tahoma", Font.PLAIN, 25)); 
    panel.add(label); 

    JLabel lblYourBankAccounts = new JLabel("Your Bank Accounts"); 
    lblYourBankAccounts.setForeground(new Color(153, 153, 153)); 
    lblYourBankAccounts.setFont(new Font("Tahoma", Font.PLAIN, 19)); 
    GridBagConstraints gbc_label = new GridBagConstraints(); 
    gbc_label.insets = new Insets(0, 60, 0, 0); 
    gbc_label.anchor = GridBagConstraints.LINE_START; 
    gbc_label.gridx = 0; 
    gbc_label.gridy = 1; 
    add(lblYourBankAccounts, gbc_label); 

    JScrollPane scrollPane = new JScrollPane(); 
    GridBagConstraints gbc_scrollPane = new GridBagConstraints(); 
    gbc_scrollPane.insets = new Insets(10, 60, 10, 10); 
    gbc_scrollPane.weightx = 1.0; 
    gbc_scrollPane.weighty = 1.0; 
    gbc_scrollPane.gridx = 0; 
    gbc_scrollPane.gridy = 2; 
    gbc_scrollPane.fill = GridBagConstraints.BOTH; 
    add(scrollPane, gbc_scrollPane); 
+3

ich empfehlen würde eine visuelle Form Designer verwenden, ist es so viel einfacher ist und schneller als es manuell zu tun. eclipse, jformdesigner, netbeans, es gibt viele Möglichkeiten. – Robadob

+0

Ich habe mein Problem gelöst. Ich habe kommentiert /*gridBagLayout.columnWidths = new int [] {0, 0}; \t \t gridBagLayout.rowHeights = new int [] {0, 0}; \t \t gridBagLayout.columnWeights = new double [] {1.0, Double.MIN_VALUE}; \t \t gridBagLayout.rowWeights = neu double [] {1.0, Double.MIN_VALUE}; */ Ich benutze WindowBuilder Addon in Eclipse. Tatsächlich werden 50% dieses Codes generiert. Vielleicht verstand ich deshalb nicht, warum ich diesen weißen Raum hatte. – Chris

+2

@Chris: Sie können Ihren Code ein wenig lesbarer machen, indem Sie eine einfache Funktion machen, die die Komponente zum angegebenen Container hinzufügt, mit 'GridBagLayout' als' Layout Manager' wie in diesem Beispiel gezeigt (http://stackoverflow.com/a/17919032/1057230) –

Antwort

1

Ich würde das in der Layout-Customizer gebaut empfehlen in Netbeans. Es ist einfach daraus zu lernen. Ich hoffe es hilft.

Für Ihre Art von Problem versuchen, die Gewichte der Komponente, die Sie strecken möchten, anzupassen.

Hier ein Screenshot, wie es geht: http://goo.gl/TBPY9i

Verwandte Themen