【问题标题】:How to setText into a jTextField that is inside a jPanel that is inside a jFrame to from Other jFrame如何将文本设置为位于 jFrame 内的 jPanel 内的 jTextField 以从其他 jFrame
【发布时间】:2014-02-24 23:43:29
【问题描述】:

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

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 中的值,请记住我提到在两个 jFrames 中,都有 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();
    }
}

所以请不要看 sintaxis,如果你能给我一个解决这个问题的想法,我想也许不要在 jTextFields 中显示它,因为它是私有的,有没有办法显示它或者我如何更新jPanel 组件显示更新的TextFields?非常感谢!

【问题讨论】:

  • 您只是在创建PanelCotization 的实例,除非您在initComponent() 中添加,否则您不会添加到任何屏幕,但您没有显示,我猜是netbeans mattise 生成的代码。

标签: java swing


【解决方案1】:

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

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

BusquedaCotizacionGUI 添加...

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

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

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

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

【讨论】:

  • 您好,感谢您的回答,您能否给我一个线索,如何将 actionListener 附加到 BusquedaCotizacionGUI?
  • 当然,看到 "In BusquedaCotizacionGUI add..." 下的大代码块了吗?然后给定一个BusquedaCotizacionGUI 的实例,只需使用instanceOfBusquedaCotizacionGUI.addActionListener(instanceOfAnActionListener)
【解决方案2】:

尝试在 jframe 的其他构造函数中使用您的 jframe 以及文本和面板作为参数,而不是在像这样调用操作按钮时在其中使用它们

public constructoroftheotherJFrame (firstJFrame frame , String yourtext){
this.frame=frame;
this.text=text;
// then type your code there
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多