这是第一个类,问题是我必须从按钮中的事件(执行的操作)触发的另一个类中接收值,所以在这个类中我要显示它!

public class PanelCotizacion extends javax.swing.JPanel {
    private int numCotizacion = 0;
    public int getNumCotizacion() {
        return numCotizacion;
    }
    public void setNumCotizacion(int numCotizacion) {
        this.numCotizacion = numCotizacion;
    }
    public PanelCotizacion() {
        initComponents();
        showTextFields();
    }
    show textFields(){
        this.txtCosTra.setText(String.valueOf(cosTra));
    }
}


这是第二个类,我要在其中发送jTextField中的值,请记住我提到在两个jFrame中都具有jPanels,并且jTextFields在其中。

public class BusquedaCotizacionGUI extends javax.swing.JFrame {
    public BusquedaCotizacionGUI() {
        initComponents();
        this.setLocationRelativeTo(null);
    }

    private void cmdOKActionPerformed(java.awt.event.ActionEvent evt) {
        PanelCotizacion p = new PanelCotizacion();
        p.setNumCotizacion(Integer.parseInt(this.txtCotizacion.getText()));
        p.setVisible(true);
        p.revalidate();
        p.updateUI();
        this.dispose();
    }
}


因此,请不要看单刀切丝,如果您能给我一个解决该问题的想法,我想也许不显示它在jTextFields中是私有的,有没有办法显示它或如何将jPanel组件更新为显示更新的TextFields?非常感谢!

最佳答案

您的示例遇到参考问题。 PanelCotizacion的实例与屏幕上的内容无关(至少,您从未将其添加到屏幕上-这可以解决我不知道的问题)

最简单的解决方案是将某种侦听器附加到第二个类(事件的源),第二个类提供该值已更改的通知,然后提供某种访问器从该类中提取值,例如public String getText() {...}例。

BusquedaCotizacionGUI中添加...

public void addActionListener(ActionListener listener) {
    cmdOk.addActionListener(listener);
}

public void removeActionListener(ActionListener listener) {
    cmdOk.removeActionListener(listener);
}

public String getText() {
    return txtCotizacion.getText();
}


PanelCotizacion或控制类的两个实例的容器中,您需要通过actionListener方法将BusquedaCotizacionGUI附加到addActionListener。调用actionPeformed时,需要设置已经具有的PanelCotizacion实例的文本

07-25 22:41