gpt4 book ai didi

java - 从 JInternalFrame 调用 JFrame 的方法?

转载 作者:行者123 更新时间:2023-11-30 08:15:32 25 4
gpt4 key购买 nike

我的问题是如何从 JInternalFrame 调用 JFrame 的方法。我有一个从 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

最佳答案

你问:

i want to acces jFrame "padre" variables. How can I acces to these variable?

我建议您实际上不想这样做,因为随着这种情况的增加,让一个类在没有任何监督或控制的情况下直接操作另一个类的字段是危险的代码耦合,不是一件好事。相反,请确保 VentanaPaint 类具有外部类可以调用的公共(public)方法,并以它本身可以控制的方式(甚至在必要时不允许)更改其状态。

由于您的 VentanaInterna 类已经有一个 padre 字段,该字段已被分配了对当前显示的 VentanaPaint JFrame 的可行引用,因此这些方法应该很容易调用。

<小时/>

此外,要访问特定于 VentanaPaint 的调用,请将 padre 字段的类型更改为 VentanaPaint 而不是 JFrame。例如更改此:

public class VentanaInterna extends javax.swing.JInternalFrame {
public javax.swing.JFrame padre;

public VentanaInterna(javax.swing.JFrame nuevoPadre) {
initComponents();
// padre=new javax.swing.JFrame();??? don't do this
padre=nuevoPadre;
}

对此:

public class VentanaInterna extends javax.swing.JInternalFrame {
public VentanaPaint padre;

public VentanaInterna(VentanaPaint nuevoPadre) {
initComponents();
// padre=new javax.swing.JFrame();??? don't do this
padre=nuevoPadre;
}

关于java - 从 JInternalFrame 调用 JFrame 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com