Eu tenho um JFrame ‘JanelaPrincipal’ e uma class ‘GerarTransacaoPanel’ que extende JPanel. Quando um botão da JanelaPrincipal é clicado eu tenho que fazer o GerarTransacaoPanel aparecer na JanelaPrincipal, isto é, incluir o GerarTransacaoPanel na JanelaPrincipal.
Parace simples, dá um new GerarTransacaoPanel , um add no getContentPane() da JanelaPrincipal e é isso ai. Porém isso não funciona… eu tentei fazer de várias formas, vou postar aqui as mais relevantes (este código esta dentro da ação de um botão da class JanelaPrincipal):
GerarTransacaoPanel panel = new GerarTransacaoPanel();
getContentPane().add(panel);
getContentPane().validate();
GerarTransacaoPanel panel = new GerarTransacaoPanel();
getContentPane().add(panel);
getContentPane().repaint();
Eu acho que o problema é que você inclui um componente na JFrame quando esta executando… Muito obrigada!
packageplataformas;importjavax.swing.SwingUtilities;/** * * @author ariane */publicclassFrameextendsjavax.swing.JFrame{/** Creates new form Frame */publicFrame(){initComponents();}// <editor-fold defaultstate="collapsed" desc=" Código Gerado "> privatevoidinitComponents(){jButton1=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jButton1.setText("Create MyJPanel");jButton1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton1ActionPerformed(evt);}});javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jButton1).addContainerGap(254,Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jButton1).addContainerGap(263,Short.MAX_VALUE)));pack();}// </editor-fold> privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){MyPanelmypanel=newMyPanel();getContentPane().add(mypanel);//getContentPane().validate();//getContentPane().repaint();//this.repaint();this.validate();//SwingUtilities.updateComponentTreeUI(this);}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newFrame().setVisible(true);}});}// Declaração de variáveis - não modifique privatejavax.swing.JButtonjButton1;// Fim da declaração de variáveis }
A
ArianeFelix
bom… eu resolvi… era só colocar um setBounds() no panel. Obrigada!