
Ayuda con la administración de componentes en un JFrame
Publicado por Iraldo (10 intervenciones) el 06/12/2015 20:25:38
Hola muy buenas.
Tengo problemas a la hora de configurar los paneles (o contenedores) dentro de una ventana (JFrame), debido a mi falta de conocimientos en POO, y el estar acostumbrado a programación tipo estructurada (no soy informático, solo industrial aficionado a la misma).
En mi programa, tengo una clase "Ventana" que se extiende de JFrame. El Layout es de tipo BorderLayout.
Por otro lado, tengo una clase que se extiende de JPanel, que pretende configurar lo que ocurre en el panel central de la Ventana ("BorderLayout.CENTER").
Para el resto de divisiones de la Ventana (NORTH, EAST...), la intención es que tengan una serie de botones que interactuen con lo que ocurre en el panel central.
Mi problema está en que estos botones tienen que ser dinámicos, o que se puedan configurar desde otras acciones. Más especificamente como uno de los problemas, en un botón JMenu, que los Items de este menú sean variables en función de otras acciones con otros botones.
Hasta ahora, lo había hecho con un 80% de programación estructurada (a lo bruto), pero creo que tengo que ir más hacia una programación orientada a objetos.
He intentado hacer una clase que extienda a JPanel para cada contenedor, pero me duplica los botones cada vez que interactuo con la ventana.
Soy consciente de mis limitaciones en POO, ya que solo llevo un par de meses con la misma.
Humildemente pido consejo al lector. Muchas gracias de antemano.
Saludos.
Iraldo.
Mi código tiene esta pinta:
CLASE VENTANA:
public class Frame extends JFrame implements ActionListener, ChangeListener{
Atributos
public Frame(){
...
pn=new PanelNorte();
pe=new PanelEste();
visualizador=new Panel();
//Configuración NORTH
panel.add(pn,BorderLayout.NORTH);
//Configuración EAST
panel.add(pe,BorderLayout.EAST);
//Configuración CENTER
panel.add(visualizador,BorderLayout.CENTER);
...
}
public ActionPerformed(){
//Eventos de los botones
}
}
CLASE PANEL:
public class Panel extends JPanel...{
...
public Panel(){
}
public void paintComponent(Graphics g){
}
public void run(){
}
...
}
Tengo problemas a la hora de configurar los paneles (o contenedores) dentro de una ventana (JFrame), debido a mi falta de conocimientos en POO, y el estar acostumbrado a programación tipo estructurada (no soy informático, solo industrial aficionado a la misma).
En mi programa, tengo una clase "Ventana" que se extiende de JFrame. El Layout es de tipo BorderLayout.
Por otro lado, tengo una clase que se extiende de JPanel, que pretende configurar lo que ocurre en el panel central de la Ventana ("BorderLayout.CENTER").
Para el resto de divisiones de la Ventana (NORTH, EAST...), la intención es que tengan una serie de botones que interactuen con lo que ocurre en el panel central.
Mi problema está en que estos botones tienen que ser dinámicos, o que se puedan configurar desde otras acciones. Más especificamente como uno de los problemas, en un botón JMenu, que los Items de este menú sean variables en función de otras acciones con otros botones.
Hasta ahora, lo había hecho con un 80% de programación estructurada (a lo bruto), pero creo que tengo que ir más hacia una programación orientada a objetos.
He intentado hacer una clase que extienda a JPanel para cada contenedor, pero me duplica los botones cada vez que interactuo con la ventana.
Soy consciente de mis limitaciones en POO, ya que solo llevo un par de meses con la misma.
Humildemente pido consejo al lector. Muchas gracias de antemano.
Saludos.
Iraldo.
Mi código tiene esta pinta:
CLASE VENTANA:
public class Frame extends JFrame implements ActionListener, ChangeListener{
Atributos
public Frame(){
...
pn=new PanelNorte();
pe=new PanelEste();
visualizador=new Panel();
//Configuración NORTH
panel.add(pn,BorderLayout.NORTH);
//Configuración EAST
panel.add(pe,BorderLayout.EAST);
//Configuración CENTER
panel.add(visualizador,BorderLayout.CENTER);
...
}
public ActionPerformed(){
//Eventos de los botones
}
}
CLASE PANEL:
public class Panel extends JPanel...{
...
public Panel(){
}
public void paintComponent(Graphics g){
}
public void run(){
}
...
}
Valora esta pregunta


0