Sobreposição de JPanels com o WindowBuilder para eclipse

Eu estou usando o WindowBuilder Pro para eclipse, e eu gostaria de ter dois Jpanels que se sobrepõem perfeitamente uns aos outros. Eu então seria capaz de alternar sua visibilidade com base na seleção de uma checkbox de combinação. Quando tento e obtenho isso no construtor de gui, o primeiro painel é deslocado pelo segundo painel. E conselhos por favor?

Eu gostaria de ter dois Jpanels que se sobrepõem perfeitamente uns aos outros. Eu poderia então alternar sua visibilidade com base na seleção de uma checkbox combinada

Veja: Como usar o layout do cartão para um exemplo que faz exatamente isso.

É possível usar groupLayout , de acordo com o tutorial .

O que você deve fazer é adicionar os componentes a um JPanel mãe e configurar esse painel para usar o GroupLayout .

Em seguida, adicione os componentes ao layout como um ParallelGroup no espaçamento horizontal e vertical. Isso significa que eles ocuparão o mesmo espaço X e Y. Em seguida, desative / ative conforme necessário, ocultando também os JPanels.

Eu acredito que a maneira como isso funcionaria é assim:

  JPanel panel1, panel2, panel3; //initialize panel3, etc panel1=new JPanel(); panel2 = new JPanel(); panel1.add(new JTextField("Panel1")); panel2.add(new JTextField("PANEL2")); groupLayout = new GroupLayout(panel3); panel3.setLayout(groupLayout); groupLayout.setHorizontalGroup( groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(panel1) .addComponent(panel2) ); groupLayout.setVerticalGroup( groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(panel1) .addComponent(panel2) ); panel1.setEnabled(false); panel1.setVisible(false); 

em seguida, adicione um jCheckBox com um método ActionPerformed contendo:

 if(panel1.isEnabled()) { panel1.setEnabled(false); panel1.setVisible(false); panel2.setEnabled(true); panel2.setVisible(true); }else if(panel2.isEnabled()) { panel2.setEnabled(false); panel2.setVisible(false); panel1.setEnabled(true); panel1.setVisible(true); } 

Isso produziu o comportamento desejado para mim. Você deve poder trocar o JComboBox pelo JCheckBox bastante facilidade.

EDIT: removido a necessidade de ter “Jpanel de seus próprios”. Esse não deve ser o caso, e o método acima permite que você obtenha os benefícios de GroupLayout e CardLayout.

Eu gostaria de ter dois Jpanels que se sobrepõem perfeitamente uns aos outros.

Eu acredito que o CardLayout está lá exatamente por esse motivo.

Basicamente, você pode aninhar diferentes painéis ou ‘Cartões’ usando o CardLayout e definir o cartão apropriado para ser exibido de forma programática (em algum evento).

Intereting Posts