2011-09-14 7 views
1

Je travaille sur un codage dur de l'application java gui sans l'aide de netbeans. J'utilise la disposition de boîte pour mon gui. Ma question est simple à partir de ce que je vois en ligne boxlayout devrait empiler des éléments les uns sur les autres. Cependant, j'ai un textarea (x, y) un bouton bascule et un autre textarea (x, y) quand ceci est affiché il y a un espace entre ma première zone de texte et le bouton bascule et un espace entre le bouton bascule et le deuxième textarea . Pourquoi ne sont-ils pas empilés? Merci,java gui boxlayout question

+3

Vous pouvez poster un très petit programme compilable et runnable qui démontre votre problème, un [sscce] (http://sscce.org). S'il vous plaît vérifier le lien, car il est très utile pour vous et nous. En outre, utilisez-vous le 'BoxLayout.PAGE_AXIS' comme deuxième paramètre de votre appel de constructeur BoxLayout? La chance! –

+0

J'utilise BoxLayout.Y_AXIS. – user541597

+0

BoxLayout.Y_AXIS est le même que BoxLayout.PAGE_AXIS, je crois, ce n'est pas le problème. Encore une fois, je recommande un SSCCE, par exemple comme indiqué ci-dessous. –

Répondre

2

Voici un exemple de SSCCE qui tente de démontrer votre problème. Peut-être que vous pouvez le modifier pour nous montrer ce qui se passe:

import java.awt.*; 
import javax.swing.*; 

public class BoxLayoutEg { 
    public static void main(String[] args) { 
     JTextArea area1 = new JTextArea(10, 20); 
     JToggleButton toggleBtn = new JToggleButton("Foo"); 
     JTextArea area2 = new JTextArea(10, 20); 

     JPanel toggleBtnPanel = new JPanel(); 
     toggleBtnPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); 
     // toggleBtnPanel.setLayout(new GridLayout()); 
     toggleBtnPanel.add(toggleBtn); 

     JPanel mainJPanel = new JPanel(); 
     mainJPanel.setLayout(new BoxLayout(mainJPanel, BoxLayout.PAGE_AXIS)); 

     mainJPanel.add(new JScrollPane(area1)); 
     mainJPanel.add(toggleBtnPanel); 
     mainJPanel.add(new JScrollPane(area2)); 

     JOptionPane.showMessageDialog(null, mainJPanel); 

    } 
}