Java 使用ActionListener将int值从一个jFrame传递到另一个jFrame
我有两个类,我使用ActionListeners,问题是我想在第一个类中从第二个类接收一个int值。。。 第一节课是这样的:Java 使用ActionListener将int值从一个jFrame传递到另一个jFrame,java,swing,actionlistener,Java,Swing,Actionlistener,我有两个类,我使用ActionListeners,问题是我想在第一个类中从第二个类接收一个int值。。。 第一节课是这样的: public class PanelCotizacion extends javax.swing.JPanel implements ActionListener { private int numCotizacion = 0; public PanelCotizacion() { initComponents(); } p
public class PanelCotizacion extends javax.swing.JPanel implements ActionListener {
private int numCotizacion = 0;
public PanelCotizacion() {
initComponents();
}
public void actionPerformed(ActionEvent e) {
System.out.println("HERE IS WHERE I WANT TO RECEIVE THE VALUE");
this numCotizacion = "";
//THE VALUE THAT I WANT TO RECEIVE FROM THE OTHER jFRAME
//TRIGGERED BY THE EVENT OF THE BUTTON (action performed)
}
}
这是第二个,我想在这里发送int值:
public class BusquedaCotizacionGUI extends javax.swing.JFrame {
private int numCotizacion = 0;
public BusquedaCotizacionGUI() {
initComponents();
this.setLocationRelativeTo(null);
PanelCotizacion pC = new PanelCotizacion();
this.cmdOK.addActionListener(pC);
}
private void cmdOKActionPerformed(java.awt.event.ActionEvent evt) {
this.numCotizacion = Integer.parseInt(this.txtNumCotizacion.getText());
//Here is where I WANT TO PASS THE VARIABLE "numCotizacion" tho the other class
//Can Somebody Help Me
this.dispose();
}
}
你们能帮我吗,非常感谢 在
ActionEvent
类中有Object getSource()
方法,因此在ActionListener中,您可以获取源代码并将其强制转换到panelcotizaion
。另一种可能是在panelcotizaciongui
的构造函数中添加对BusquedaCotizacionGUI
的引用。从您的代码中,我认为BusquedaCotizacionGUI JFrame
负责打开PanelCotizacion Jpanel
并传递变量
因此,有很多方法可以将变量从JFrame
传递到JPanel
可以使用int参数创建构造函数,然后在构造函数中传递变量,如:
public PanelCotizacion(int numCotizacion) {
initComponents();
this.numCotizacion = numCotizacion;
}
或者您可以将JFrame
作为父组件传递给JPanel
构造函数,然后通过创建一个get方法获取值,如
private JFrame parent;
public PanelCotizacion(JFrame parent) {
initComponents();
this.parent= parent;
}
然后得到如下值:
parent.getNumCotizacion();
在第二个JFrame(BusquedaCotizacionGUI)中添加以下代码行(类似于此):
在第一个JFrame(PanelCotizacion)中添加一个方法(比如setParam)和一个整数字段(比如myField):
您应该决定如何实现这个想法(静态方法与创建第一个JFrame的实例,…);这只是一般的想法,定制它以满足您的需求。感谢Salah的评论,使用int参数的构造函数不起作用,第二个选项我不知道在我的代码“parent.getNumCotizacion();”中放在哪里,因为它会生成错误,我也忘了提及我使用的面板,我已经使用removeAll()多次与其他面板一起更改它。添加(组件),.updateUI();所以我不知道这是否会影响我为什么看不到变量numCotizacion的更新,我将尝试Kojotak的答案谢谢你的答案mok,但它不起作用,我在PanelCotizacion中遇到了一个错误,另一种传递值的方法?不客气,你是如何调用setParam的,请提供有关错误的更多详细信息。“非静态变量无法从静态上下文引用此变量“,再次感谢您的帮助!哦,真是个错误!你说得对。对不起:)我现在就修。只需使用new创建另一个JFrame的示例,并使用创建的对象调用setParam,只需将myField设置为静态。我如何才能做到这一点?这是我的代码:public static void setParam(int parseInt){throw new UnsupportedOperationException(“还不受支持”);//要更改生成的方法体,请选择Tools | Templates.this.numCotizacion=parseInt;},我的变量是:public static int numCotizacion=0;但我有同样的警告!
PanelCotizacion.setParam(int parameterToPass)
public void setParam (int param) {
this.myField = param;
}