Olá pessoal !
 
Rodei um pequeno exemplo de código e ele funciona OK, mas quando fecho a aplicação, o prompt não retorna. Sou obrigado a ir no gerenciador de tarefa e matar o processo java.exe no Winnt.
Não sei se é relevante, mas para conseguir rodar, tive que setar o classpath com o comando SET CLASSPATH=  , para desaparecer o erro que estava ocorrendo ao rodar: ""Exception in thread "main" java.lang.NoClassDefFounError:Teste""
 
O que tem de errado nesse código ?
 
//
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
 
public class Teste extends JFrame implements ActionListener
{
 JPanel pn1A;
 JPanel pn1B;
 JLayeredPane layeredPane;
 JMenuItem mA;
 JMenuItem mB;
 public static void main( String args[] )
 {
  new Teste();
 }
 public Teste()
 {
  super("Teste");
  setBounds( 200, 100, 400, 400 );
  layeredPane = getLayeredPane();
  layeredPane.setLayout( null );
 
  //Prepara o menu
  JMenuBar menuBar = new JMenuBar();
  getRootPane().setJMenuBar( menuBar );
  JMenu menu = new JMenu( "Painéis");
  menuBar.add( menu );
  mA = new JMenuItem("Panel A");
  mA.addActionListener( this );
  menu.add( mA );
  mB = new JMenuItem("Panel B");
  mB.addActionListener( this );
  menu.add( mB );
 
  // Cria os Painéis
  pn1A = new JPanel();
  pn1A.setBackground( Color.blue );
  pn1A.setBounds( 0, 20, 400, 380 );
  layeredPane.add( pn1A, new Integer(1));
 
  pn1B = new JPanel();
  pn1B.setBackground( Color.yellow );
  pn1B.setBounds( 0, 20, 400, 380 );
  layeredPane.add( pn1B, new Integer(2));
 
  setVisible( true );
 }
 
 public void actionPerformed( ActionEvent ae )
 {
 
  if( ae.getSource() == mA )
  {
   layeredPane.setLayer( pn1A, 1 );
   layeredPane.setLayer( pn1B, 0 );
  }
  else
  {
   layeredPane.setLayer( pn1A, 0 );
   layeredPane.setLayer( pn1B, 1 );
  }
 }
}
//
 
Abraços.
 
José Fernando

Responder a