Srs. estou escrevendo pela primeira vez uma pequena aplicação usando swing, e estou com algumas dúvidas. A aplicação extende a classe JFrame, tem um menuBar, um Panel (topPanel) dividido em três áreas, NORTH - um panel com o toolBar, SOUTH - um JTextField para mensagens e no CENTER - um panel (mainPanel).
A idéia é que que ao iniciar a aplicação mostra no mainPanel uma tela de Login, caso o cliente seja validado, no CENTER do topPanel será mostrado uma JTable. A aplicação está funcionando, mas a JTable não aparece sobre a tela de Login, a não ser que a janela da aplicação tenha seu tamanho alterado (maximização por exemplo). minha dúvida é como sobrepor ou como remover um panel (login) por outro. qualquer ajuda será muito bem recebida. em anexo uma versão simples da aplicação. Clique em "Cadastro/Usuário" para ver o que acontece. att, ronaldo miranda www.divinet.com.br www.isp.com.br (37) 3222-8870 (37) 9963-8241
import java.sql.*; import java.net.URL; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.plaf.metal.DefaultMetalTheme; import javax.swing.plaf.metal.MetalLookAndFeel; class Teste extends JFrame { JPanel topPanel; JPanel toolPanel, pConexao; JPanel mainPanel; JTextField login, msgField; JPasswordField senha; JMenuBar menuBar; JToolBar toolBar; JLabel label; JDBCTablePanel resultTable; protected JSplitPane entradaPane; int i; public Teste() { setTitle( "Teste" ); setSize( 610, 430 ); //Painel Principal topPanel = new JPanel(); topPanel.setLayout( new BorderLayout() ); //Painel ToolBar toolPanel = new JPanel(); toolPanel.setLayout( new FlowLayout() ); topPanel.add(toolPanel, BorderLayout.NORTH); mainPanel = new JPanel(); mainPanel.setLayout( new BorderLayout() ); mainPanel.setBorder(new EtchedBorder()); topPanel.add(mainPanel, BorderLayout.CENTER); msgField = new JTextField("Mensagens..."); topPanel.add(msgField,"South"); getContentPane().add( topPanel ); // Create the menu bar menuBar = new JMenuBar(); // Set this instance as the application's menu bar setJMenuBar( menuBar ); JMenu mArquivo = new JMenu( "Arquivo" ) ; JMenuItem miArqMS = new JMenuItem("Mudar Senha"); JMenuItem miArqSair = new JMenuItem("Sair"); JMenuItem miArqSup = new JMenuItem("Suporte"); mArquivo.add(miArqMS); mArquivo.add(miArqSair); mArquivo.addSeparator(); mArquivo.add(miArqSup); JMenu mCadastros = new JMenu( "Cadastros" ) ; JMenuItem miCadUsu = new JMenuItem("Usuários"); miCadUsu.addActionListener( new actionUsuarios() ); JMenuItem miCadIns = new JMenuItem("Insumos"); mCadastros.add(miCadUsu); mCadastros.add(miCadIns); menuBar.add( mArquivo); menuBar.add( mCadastros); pConexao = new JPanel(); pConexao.setLayout(new BoxLayout(pConexao, BoxLayout.Y_AXIS)); pConexao.setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); JPanel pLogin = new JPanel(); pLogin.setLayout( new FlowLayout() ); label = new JLabel("Login: "); pLogin.add(label); login = new JTextField(10); pLogin.add(login); pLogin.setAlignmentX(JComponent.CENTER_ALIGNMENT); JPanel pSenha = new JPanel(); pSenha.setLayout( new FlowLayout() ); label = new JLabel("Senha: "); pSenha.add(label); senha = new JPasswordField(10); pSenha.add(senha); pSenha.setAlignmentX(JComponent.CENTER_ALIGNMENT); JButton bConectar = new JButton("Conectar"); bConectar.setToolTipText("Clique aqui para se conectar"); bConectar.setAlignmentX(JComponent.CENTER_ALIGNMENT); bConectar.addActionListener( new Conectar() ); pConexao.add(Box.createRigidArea(new Dimension(0,5))); pConexao.add(pLogin); pConexao.add(Box.createRigidArea(new Dimension(0,5))); pConexao.add(pSenha); pConexao.add(Box.createRigidArea(new Dimension(0,5))); pConexao.add(bConectar); pConexao.add(Box.createRigidArea(new Dimension(0,5))); mainPanel.add(pConexao, BorderLayout.SOUTH); //Anonymous inner class to terminate program. this.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.out.println("!!"); System.exit( 0 ); } } );//end addWindowListener } ////Usuários class actionUsuarios implements ActionListener { public void actionPerformed(ActionEvent e) { //.... //Lista os usuários numa JTable e os adiciona em //topPanel.add(resultTable, BorderLayout.CENTER); JPanel pTable = new JPanel(); pTable.setLayout( new FlowLayout() ); JLabel label = new JLabel("Painel com uma JTable "); pTable.add(label); topPanel.remove(mainPanel); topPanel.add(pTable, BorderLayout.CENTER); } } class Conectar implements ActionListener { public void actionPerformed(ActionEvent e) { //verifica se os campos login e senha foram verificados e sim conecta com o bando em fetch(); } } public int fetch() { //conecta com o banco de dados e retorna 0, 1 ou 2. return 0; } public static void main( String args[] ) { // Create an instance of the test application Teste mainFrame = new Teste(); try { javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme( new javax.swing.plaf.metal.DefaultMetalTheme()); UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); SwingUtilities.updateComponentTreeUI(mainFrame); mainFrame.pack(); } catch (Exception exc) { System.err.println("Não possível carregar o LookAndFeel Metal "); } mainFrame.setVisible( true ); } }
------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------