这是第一个类,问题是我必须从按钮中的事件(执行的操作)触发的另一个类中接收值,所以在这个类中我要显示它!
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
实例的文本