1
我的問題是如何從JInternalFrame
調用JFrame
的方法。我有一個從JFrame
擴展了隔壁班:從JInternalFrame調用JFrame的方法?
public class VentanaPaint extends javax.swing.JFrame {
/**
* Creates new form VentanaPaint
*/
public VentanaPaint() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
GroupButtonNav = new javax.swing.ButtonGroup();
buttonGroup2PaletaColores = new javax.swing.ButtonGroup();
barraNavegacion = new javax.swing.JToolBar();
BotonDibujarPunto = new javax.swing.JToggleButton();
jSeparator1 = new javax.swing.JToolBar.Separator();
BotonDibujarLinea = new javax.swing.JToggleButton();
BotonDibujarCuadrado = new javax.swing.JToggleButton();
BotonDibujarElipse = new javax.swing.JToggleButton();
contenedorEscritorio = new javax.swing.JPanel();
escritorio = new javax.swing.JDesktopPane();
panelBarraTrabajo = new javax.swing.JPanel();
panelBarraHerramientas = new javax.swing.JPanel();
contenedorPaletaColores = new javax.swing.JPanel();
PaletaColores = new javax.swing.JPanel();
botonNegro = new javax.swing.JToggleButton();
botonRojo = new javax.swing.JToggleButton();
botonAzul = new javax.swing.JToggleButton();
botonBlanco = new javax.swing.JToggleButton();
botonAmarillo = new javax.swing.JToggleButton();
botonVerde = new javax.swing.JToggleButton();
contendorGrosor = new javax.swing.JPanel();
spinnerGrosor = new javax.swing.JSpinner();
contenedorOpciones = new javax.swing.JPanel();
jCheckBoxEditar = new javax.swing.JCheckBox();
jCheckBoxRelleno = new javax.swing.JCheckBox();
jCheckBoxAlisar = new javax.swing.JCheckBox();
checkBoxTransparencia = new javax.swing.JCheckBox();
panelBarraNotificacion = new javax.swing.JPanel();
barraNotificacion = new javax.swing.JLabel();
jMenuBar2 = new javax.swing.JMenuBar();
Archivo = new javax.swing.JMenu();
Nuevo = new javax.swing.JMenu();
abrirArchivo = new javax.swing.JMenuItem();
guardarArchivo = new javax.swing.JMenuItem();
Edicion = new javax.swing.JMenu();
BarraEstado = new javax.swing.JCheckBoxMenuItem();
FormListener formListener = new FormListener();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(255, 252, 240));
barraNavegacion.setRollover(true);
GroupButtonNav.add(BotonDibujarPunto);
BotonDibujarPunto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/practica7/pics/lapiz2_24x24.png"))); // NOI18N
BotonDibujarPunto.setFocusable(false);
BotonDibujarPunto.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
BotonDibujarPunto.setMargin(new java.awt.Insets(0, 0, 0, 0));
BotonDibujarPunto.setMaximumSize(new java.awt.Dimension(62, 62));
BotonDibujarPunto.setMinimumSize(new java.awt.Dimension(62, 62));
BotonDibujarPunto.setSize(new java.awt.Dimension(20, 20));
BotonDibujarPunto.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
BotonDibujarPunto.addMouseListener(formListener);
barraNavegacion.add(BotonDibujarPunto);
barraNavegacion.add(jSeparator1);
GroupButtonNav.add(BotonDibujarLinea);
BotonDibujarLinea.setIcon(new javax.swing.ImageIcon(getClass().getResource("/practica7/pics/line24x24.png"))); // NOI18N
BotonDibujarLinea.setFocusable(false);
BotonDibujarLinea.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
BotonDibujarLinea.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
BotonDibujarLinea.addMouseListener(formListener);
barraNavegacion.add(BotonDibujarLinea);
GroupButtonNav.add(BotonDibujarCuadrado);
BotonDibujarCuadrado.setIcon(new javax.swing.ImageIcon(getClass().getResource("/practica7/pics/cuadrado24x24.png"))); // NOI18N
BotonDibujarCuadrado.setFocusable(false);
BotonDibujarCuadrado.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
BotonDibujarCuadrado.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
BotonDibujarCuadrado.addMouseListener(formListener);
barraNavegacion.add(BotonDibujarCuadrado);
GroupButtonNav.add(BotonDibujarElipse);
BotonDibujarElipse.setIcon(new javax.swing.ImageIcon(getClass().getResource("/practica7/pics/elipse24x24.png"))); // NOI18N
BotonDibujarElipse.setFocusable(false);
BotonDibujarElipse.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
BotonDibujarElipse.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
BotonDibujarElipse.addMouseListener(formListener);
barraNavegacion.add(BotonDibujarElipse);
getContentPane().add(barraNavegacion, java.awt.BorderLayout.NORTH);
contenedorEscritorio.setLayout(new java.awt.BorderLayout());
javax.swing.GroupLayout escritorioLayout = new javax.swing.GroupLayout(escritorio);
escritorio.setLayout(escritorioLayout);
escritorioLayout.setHorizontalGroup(
escritorioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 478, Short.MAX_VALUE)
);
escritorioLayout.setVerticalGroup(
escritorioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 149, Short.MAX_VALUE)
);
contenedorEscritorio.add(escritorio, java.awt.BorderLayout.CENTER);
getContentPane().add(contenedorEscritorio, java.awt.BorderLayout.CENTER);
panelBarraTrabajo.setLayout(new java.awt.BorderLayout());
panelBarraHerramientas.setBackground(new java.awt.Color(204, 208, 182));
panelBarraHerramientas.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
java.awt.FlowLayout flowLayout1 = new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 15, 5);
flowLayout1.setAlignOnBaseline(true);
panelBarraHerramientas.setLayout(flowLayout1);
contenedorPaletaColores.setBackground(new java.awt.Color(204, 208, 182));
contenedorPaletaColores.setBorder(javax.swing.BorderFactory.createTitledBorder("Colores"));
PaletaColores.setBackground(new java.awt.Color(204, 204, 204));
PaletaColores.setMaximumSize(new java.awt.Dimension(320, 320));
PaletaColores.setMinimumSize(new java.awt.Dimension(129, 58));
PaletaColores.setLayout(new java.awt.GridLayout(2, 3));
botonNegro.setBackground(new java.awt.Color(0, 0, 0));
buttonGroup2PaletaColores.add(botonNegro);
botonNegro.addMouseListener(formListener);
PaletaColores.add(botonNegro);
botonRojo.setBackground(new java.awt.Color(255, 0, 0));
buttonGroup2PaletaColores.add(botonRojo);
botonRojo.addMouseListener(formListener);
PaletaColores.add(botonRojo);
botonAzul.setBackground(new java.awt.Color(51, 51, 255));
buttonGroup2PaletaColores.add(botonAzul);
botonAzul.addMouseListener(formListener);
PaletaColores.add(botonAzul);
botonBlanco.setBackground(new java.awt.Color(255, 255, 255));
buttonGroup2PaletaColores.add(botonBlanco);
botonBlanco.addMouseListener(formListener);
PaletaColores.add(botonBlanco);
botonAmarillo.setBackground(new java.awt.Color(255, 255, 0));
buttonGroup2PaletaColores.add(botonAmarillo);
botonAmarillo.addMouseListener(formListener);
PaletaColores.add(botonAmarillo);
botonVerde.setBackground(new java.awt.Color(51, 255, 51));
buttonGroup2PaletaColores.add(botonVerde);
botonVerde.addMouseListener(formListener);
PaletaColores.add(botonVerde);
javax.swing.GroupLayout contenedorPaletaColoresLayout = new javax.swing.GroupLayout(contenedorPaletaColores);
contenedorPaletaColores.setLayout(contenedorPaletaColoresLayout);
contenedorPaletaColoresLayout.setHorizontalGroup(
contenedorPaletaColoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(PaletaColores, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
);
contenedorPaletaColoresLayout.setVerticalGroup(
contenedorPaletaColoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(PaletaColores, javax.swing.GroupLayout.PREFERRED_SIZE, 50, Short.MAX_VALUE)
);
panelBarraHerramientas.add(contenedorPaletaColores);
contendorGrosor.setBackground(new java.awt.Color(204, 208, 182));
contendorGrosor.setBorder(javax.swing.BorderFactory.createTitledBorder("Grosor"));
contendorGrosor.setName(""); // NOI18N
contendorGrosor.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 5, 12));
spinnerGrosor.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), Float.valueOf(0.0f), Float.valueOf(40.0f), Float.valueOf(1.0f)));
spinnerGrosor.addChangeListener(formListener);
contendorGrosor.add(spinnerGrosor);
panelBarraHerramientas.add(contendorGrosor);
contenedorOpciones.setBackground(new java.awt.Color(204, 208, 182));
contenedorOpciones.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
contenedorOpciones.setLayout(new java.awt.GridLayout(2, 2));
jCheckBoxEditar.setText("Editar");
jCheckBoxEditar.addChangeListener(formListener);
contenedorOpciones.add(jCheckBoxEditar);
jCheckBoxRelleno.setText("Relleno");
jCheckBoxRelleno.addChangeListener(formListener);
contenedorOpciones.add(jCheckBoxRelleno);
jCheckBoxAlisar.setText("Alisar");
jCheckBoxAlisar.addChangeListener(formListener);
contenedorOpciones.add(jCheckBoxAlisar);
checkBoxTransparencia.setText("Transparencia");
checkBoxTransparencia.setContentAreaFilled(false);
checkBoxTransparencia.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
checkBoxTransparencia.addChangeListener(formListener);
contenedorOpciones.add(checkBoxTransparencia);
panelBarraHerramientas.add(contenedorOpciones);
panelBarraTrabajo.add(panelBarraHerramientas, java.awt.BorderLayout.NORTH);
panelBarraNotificacion.setBorder(javax.swing.BorderFactory.createEtchedBorder());
panelBarraNotificacion.setLayout(new java.awt.BorderLayout());
barraNotificacion.setText(" ");
panelBarraNotificacion.add(barraNotificacion, java.awt.BorderLayout.NORTH);
panelBarraTrabajo.add(panelBarraNotificacion, java.awt.BorderLayout.SOUTH);
getContentPane().add(panelBarraTrabajo, java.awt.BorderLayout.SOUTH);
Archivo.setText("Archivo");
Nuevo.setText("Nuevo");
Nuevo.addMouseListener(formListener);
Archivo.add(Nuevo);
abrirArchivo.setText("Abrir");
abrirArchivo.addActionListener(formListener);
Archivo.add(abrirArchivo);
guardarArchivo.setText("Guardar");
guardarArchivo.addActionListener(formListener);
Archivo.add(guardarArchivo);
jMenuBar2.add(Archivo);
Edicion.setText("Edición");
BarraEstado.setSelected(true);
BarraEstado.setText("Ver barra de estado");
BarraEstado.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
BarraEstado.addActionListener(formListener);
Edicion.add(BarraEstado);
jMenuBar2.add(Edicion);
setJMenuBar(jMenuBar2);
pack();
}
// Code for dispatching events from components to event handlers.
private class FormListener implements java.awt.event.ActionListener, java.awt.event.MouseListener, javax.swing.event.ChangeListener {
FormListener() {}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == abrirArchivo) {
VentanaPaint.this.abrirArchivoActionPerformed(evt);
}
else if (evt.getSource() == guardarArchivo) {
VentanaPaint.this.guardarArchivoActionPerformed(evt);
}
else if (evt.getSource() == BarraEstado) {
VentanaPaint.this.BarraEstadoActionPerformed(evt);
}
}
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getSource() == BotonDibujarPunto) {
VentanaPaint.this.BotonDibujarPuntoMouseClicked(evt);
}
else if (evt.getSource() == BotonDibujarLinea) {
VentanaPaint.this.BotonDibujarLineaMouseClicked(evt);
}
else if (evt.getSource() == BotonDibujarCuadrado) {
VentanaPaint.this.BotonDibujarCuadradoMouseClicked(evt);
}
else if (evt.getSource() == BotonDibujarElipse) {
VentanaPaint.this.BotonDibujarElipseMouseClicked(evt);
}
else if (evt.getSource() == botonNegro) {
VentanaPaint.this.botonNegroMouseClicked(evt);
}
else if (evt.getSource() == botonRojo) {
VentanaPaint.this.botonRojoMouseClicked(evt);
}
else if (evt.getSource() == botonAzul) {
VentanaPaint.this.botonAzulMouseClicked(evt);
}
else if (evt.getSource() == botonBlanco) {
VentanaPaint.this.botonBlancoMouseClicked(evt);
}
else if (evt.getSource() == botonAmarillo) {
VentanaPaint.this.botonAmarilloMouseClicked(evt);
}
else if (evt.getSource() == botonVerde) {
VentanaPaint.this.botonVerdeMouseClicked(evt);
}
else if (evt.getSource() == Nuevo) {
VentanaPaint.this.NuevoMouseClicked(evt);
}
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
}
public void mouseExited(java.awt.event.MouseEvent evt) {
}
public void mousePressed(java.awt.event.MouseEvent evt) {
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
}
public void stateChanged(javax.swing.event.ChangeEvent evt) {
if (evt.getSource() == spinnerGrosor) {
VentanaPaint.this.spinnerGrosorStateChanged(evt);
}
else if (evt.getSource() == jCheckBoxEditar) {
VentanaPaint.this.jCheckBoxEditarStateChanged(evt);
}
else if (evt.getSource() == jCheckBoxRelleno) {
VentanaPaint.this.jCheckBoxRellenoStateChanged(evt);
}
else if (evt.getSource() == jCheckBoxAlisar) {
VentanaPaint.this.jCheckBoxAlisarStateChanged(evt);
}
else if (evt.getSource() == checkBoxTransparencia) {
VentanaPaint.this.checkBoxTransparenciaStateChanged(evt);
}
}
}// </editor-fold>
private void guardarArchivoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JFileChooser dlg = new JFileChooser();
int resp = dlg.showSaveDialog(this);
if(resp == JFileChooser.APPROVE_OPTION) {
File f = dlg.getSelectedFile();
//codigo;
}
}
在這裏,我創建一個新的JInternalFrame
:
private void NuevoMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
//le pasamos el padre
VentanaInterna vi=new VentanaInterna(this);
escritorio.add(vi);
vi.setVisible(true);
}
public JToolBar getBarraNavegacion(){
return barraNavegacion;
}
public void setBarraNavegacion(JToolBar nuevaBarraNavegacion)
{
barraNavegacion=nuevaBarraNavegacion;
}
public javax.swing.JSpinner getSpinnerGrosor(){
return spinnerGrosor;
}
// Variables declaration - do not modify
private javax.swing.JMenu Archivo;
private javax.swing.JCheckBoxMenuItem BarraEstado;
private javax.swing.JToggleButton BotonDibujarCuadrado;
private javax.swing.JToggleButton BotonDibujarElipse;
private javax.swing.JToggleButton BotonDibujarLinea;
public javax.swing.JToggleButton BotonDibujarPunto;
private javax.swing.JMenu Edicion;
private javax.swing.ButtonGroup GroupButtonNav;
private javax.swing.JMenu Nuevo;
private javax.swing.JPanel PaletaColores;
private javax.swing.JMenuItem abrirArchivo;
public javax.swing.JToolBar barraNavegacion;
private javax.swing.JLabel barraNotificacion;
private javax.swing.JToggleButton botonAmarillo;
private javax.swing.JToggleButton botonAzul;
private javax.swing.JToggleButton botonBlanco;
private javax.swing.JToggleButton botonNegro;
private javax.swing.JToggleButton botonRojo;
private javax.swing.JToggleButton botonVerde;
private javax.swing.ButtonGroup buttonGroup2PaletaColores;
private javax.swing.JCheckBox checkBoxTransparencia;
private javax.swing.JPanel contendorGrosor;
private javax.swing.JPanel contenedorEscritorio;
private javax.swing.JPanel contenedorOpciones;
private javax.swing.JPanel contenedorPaletaColores;
private javax.swing.JDesktopPane escritorio;
private javax.swing.JMenuItem guardarArchivo;
private javax.swing.JCheckBox jCheckBoxAlisar;
private javax.swing.JCheckBox jCheckBoxEditar;
private javax.swing.JCheckBox jCheckBoxRelleno;
private javax.swing.JMenuBar jMenuBar2;
private javax.swing.JToolBar.Separator jSeparator1;
private javax.swing.JPanel panelBarraHerramientas;
private javax.swing.JPanel panelBarraNotificacion;
private javax.swing.JPanel panelBarraTrabajo;
private javax.swing.JSpinner spinnerGrosor;
// End of variables declaration
}
而且從隔壁班的,裏面的方法
private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt)
我想訪問JFrame
變量的padre
。 如何訪問這些變量?
public class VentanaInterna extends javax.swing.JInternalFrame {
//public practica7.Lienzo2D lienzo;
public javax.swing.JFrame padre;
public VentanaInterna() {
initComponents();
padre=new javax.swing.JFrame();
}
/**
* Creates new form VentanaInterna
* @param nuevoPadre
*/
public VentanaInterna(javax.swing.JFrame nuevoPadre) {
initComponents();
padre=new javax.swing.JFrame();
padre=nuevoPadre;
}
/**
* metodo selector que devuele el padre
* @return padre
*/
public javax.swing.JFrame getPadre()
{
return padre;
}
/**
* metodo modificador que modifica el padre
* @param padrenuevo
*/
public void setPadre(javax.swing.JFrame padrenuevo)
{
padre=padrenuevo;
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
lienzo1 = new practica7.Lienzo2D();
setClosable(true);
setIconifiable(true);
setMaximizable(true);
setResizable(true);
setTitle("Nuevo lienzo");
addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
formInternalFrameActivated(evt);
}
public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lienzo1, javax.swing.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lienzo1, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
// TODO add your handling code here:
/*
Component c[]= padre.getRootPane().getComponents();
for(Component comp:c){
if((comp.getAccessibleContext().getAccessibleName())=="BotonDibujarPunto"){
comp.
}
}
*/
}
// Variables declaration - do not modify
private practica7.Lienzo2D lienzo1;
// End of variables declaration
public practica7.Lienzo2D getLienzo()
{
return lienzo1;
}
}//final clase
是的,我有公共javax.swing.JSpinner中getSpinnerGrosor(){ 回報spinnerGrosor; }這是公開的。但我不知道如何使用這個方法從padre參考JFrame –
@BogdanMuresan:啊是的,我明白了。你的問題只是改變一個變量的類型。請參閱編輯以回答。 –
問題解決了。感謝@Hovercraft Full Of Eels –