Tengo un JFrame con dos contenedores personalizados uno extends JTabbedPane y utro extends JPanel llamado PanelGrafico. Quiero que un botón ejecutado en uno de los JPanel del JTabbedPane desencadene una acción en el JPanel PanelGrafico.
Respuesta de fbluisg
0
0
fbluisg, He trabajado con java, c, c++, visual basic, c#, sql, ruby
Pero si el botón pertenece al JFrame puedes colocar el botón en el JtabbedPane y que haga las acciones en el JPanel mientras el botón lo declares en el JFrame pero lo añadas al JTabbedPane ahí puedes hacer las acciones.
El problema es que JTabbedPane como el JPanel son clases diferentes del JFrame. Aunque declare el JButton en el JFrame lo tengo que volver a declarar en el JPanel. Me pasa lo mismo con el JBarMenu. O declaro todo el en JFrame o no puedo hacer que los eventos interacciones con otras clases. Pongo parte del código. Clase que inicia el programa import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Inicio { public static void main(String args[]){ VentanaPrincipal v = new VentanaPrincipal(); v.setVisible(true); v.addWindowListener(new WindowAdapter(){ public void windowClosing( WindowEvent e){ System.exit(0);}}); } } Ventana del JFrame: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.Line2D; import java.awt.geom.Line2D.Double; public class VentanaPrincipal extends JFrame{ public Pestañas Pest; public PanelGrafico Grafico; public int Acciones; public VentanaPrincipal(){ setTitle("CaptaSol"); setSize(800, 600); setLocationRelativeTo(null); ponComponentes(); } private void ponComponentes(){ setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); Acciones = 0; Pestañas Pest = new Pestañas(); constraints.gridx = 0; // El área de control empieza en la columna cero. constraints.gridy = 0; constraints.gridwidth = 1; // El área de control ocupa una columnas. constraints.gridheight =1; constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; getContentPane().add(Pest,constraints); PanelGrafico Grafico = new PanelGrafico(); constraints.gridx = 1; // El área grafica empieza en la columna uno. constraints.gridwidth = 2; // El área grafica ocupa dos columnas. constraints.gridy = 0; constraints.gridheight =1; constraints.weightx = 2.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; getContentPane().add(Grafico,constraints); } La clase con las pestañas import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.Line2D; import java.awt.geom.Line2D.Double; public class Pestañas extends JTabbedPane{ public PanelControl1 Panel1; public PanelControl2 Panel2; public PanelControl3 Panel3; public Pestañas(){ PanelControl1 Panel1 = new PanelControl1(); addTab("Mapa", null, Panel1, "Primer panel"); PanelControl2 Panel2 = new PanelControl2(); addTab("Posición", null, Panel2, "Segundo panel"); PanelControl3 Panel3 = new PanelControl3(); addTab("Control", null, Panel3, "Tercer panel"); } } Panel con los JButton import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class PanelControl1 extends JPanel { public JButton Boton1; public JButton Boton2; public AccionPanelControl1 AccionBoton1; public PanelControl1(){ setLayout(null); JButton Boton1 = new JButton(); Boton1.setText("Aceptar"); Boton1.addActionListener (AccionBoton1); Boton1.setActionCommand("Boton1"); JButton Boton2 = new JButton(); Boton2.setText("Limpiar"); Boton2.addActionListener (AccionBoton1); Boton2.setActionCommand("Boton2"); add(Boton1); add(Boton2); Boton1.setBounds (20,120,80,20); Boton2.setBounds (110,120,80,20); } } ¿Cómo puedo hacer que al pinchar en uno de estos Botones se ejecute algo en el JFRAME?
BUeno yo igual no miro que en algún momento unas esto y abría que hacer algo como que tienes tu JFRAME a este le agredas el TabbedPane y a cada TabbedPane o solo algunos depende de tu lógica le añades un JPanel con los botones y ahí no debería de haber ningún problema y no se porque haces tantas clases cuando en realidad la clase JFrame pudiera contener todo eso, si en el mismo java ya están separadas las clases para que volver a inventarlas.