>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
Se voce encerrar o programa ao fechar a janela do frame, esse problema
deve ser resolvido. Basta adicionar um WindowListener e encerrar o processo
usando System.exit(0). Observe as modificacoes no metodo main.
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 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 );
}
}
//***MODIFICACOES
public static void main( String args[] )
{
Teste app = new Teste();
app.addWindowListener( new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}//close main
}
Assim voce finaliza a aplicacao quando a janela eh fechada retornando ao
prompt.
Espero que a dica ajude.
Abraco,
Luis Fernando.
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
--------------------------- 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]
[para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
---------------------------------------------------------------------