[ Foro de Java ]

Agregar JPanel a JPanel principal con BorderLayout

22-Nov-2019 11:04
Invitado (Casaenobras)
0 Respuestas

Hola, tengo una lamina principal con borderlayout en una clase con su constructor, y en el centro de este borderlayout quiero agregar otra lamina que tambien esta en una clase con su constructor. Al instanciar la segunda lamina e iniciar el programa me da el siguiente error:
Exception in thread "main" java.lang.NullPointerException
at presupuestos.LaminaElec.<init>(AppGrafica.java:93)
at presupuestos.LaminaPrincipal.<init>(AppGrafica.java:55)
at presupuestos.VentanaPrincipal.<init>(AppGrafica.java:24)
at presupuestos.AppGrafica.main(AppGrafica.java:11)

Lo he intentado de varias maneras pero no ha funcionado ninguna.
Les dejo el codigo por si acaso.
Gracias.

package presupuestos;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class AppGrafica {

public static void main(String[] args) {

VentanaPrincipal venprin=new VentanaPrincipal();
venprin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
venprin.setVisible(true);
}

}

class VentanaPrincipal extends JFrame{

public VentanaPrincipal() {

setBounds(300,150,600,400);
setTitle("Tienda Electrodomesticos");
LaminaPrincipal lamprin=new LaminaPrincipal();
add(lamprin);
}
}

class LaminaPrincipal extends JPanel{

public LaminaPrincipal() {

setLayout(new BorderLayout());

LaminaNorte=new JPanel();

combo=new JComboBox();
combo.addItem("Selecciona");
combo.addItem("Electrodomestico");
combo.addItem("Lavadora");
combo.addItem("Televisor");
EventoCombo Ecombo=new EventoCombo();
combo.addActionListener(Ecombo);
LaminaNorte.add(combo);
add(LaminaNorte, BorderLayout.NORTH);

LaminaSur=new JPanel();

bAceptar=new JButton("Aceptar");
EventoBoton eBoton=new EventoBoton();
bAceptar.addActionListener(eBoton);
LaminaSur.add(bAceptar);
add(LaminaSur, BorderLayout.SOUTH);

LaminaElec lamelec=new LaminaElec();//Esta instancia me produce el error.
//Lo he intentado de varias maneras y no me funciona ninguna

}

private class EventoCombo extends JPanel implements ActionListener{

public void actionPerformed(ActionEvent e) {

String seleccion=((String) combo.getSelectedItem()).trim();

if(seleccion=="Electrodomestico") {

}
}
}

private class EventoBoton implements ActionListener{

public void actionPerformed(ActionEvent e) {

}
}

private JPanel LaminaNorte;
private JPanel LaminaSur;
private JComboBox combo;
private JButton bAceptar;

}

class LaminaElec extends JPanel{

public LaminaElec() {

setLayout(new BorderLayout());

ZonaNorte=new JPanel();

color.setText("Color: ");

combocolor=new JComboBox();
combocolor.addItem("Blanco");
combocolor.addItem("Rojo");
combocolor.addItem("Gris");
combocolor.addItem("Negro");
EventoColor ecolor=new EventoColor();
combocolor.addActionListener(ecolor);

letra.setText("Eficiencia Energetica: ");

comboletra=new JComboBox();
comboletra.addItem("A");
comboletra.addItem("B");
comboletra.addItem("C");
comboletra.addItem("D");
comboletra.addItem("E");
comboletra.addItem("F");
EventoLetra eletra=new EventoLetra();
comboletra.addActionListener(eletra);

ZonaNorte.add(color);
ZonaNorte.add(combocolor);
ZonaNorte.add(letra);
ZonaNorte.add(comboletra);
add(ZonaNorte, BorderLayout.NORTH);

}

private class EventoColor implements ActionListener{

public void actionPerformed(ActionEvent e) {

}
}

private class EventoLetra implements ActionListener{

public void actionPerformed(ActionEvent e) {

}
}

private JPanel ZonaNorte;
private JLabel color;
private JComboBox combocolor;
private JLabel letra;
private JComboBox comboletra;
private JLabel peso;
private JTextField texpeso;
private JLabel precioini;
private JTextField texprecioini;
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)