Java从另一个类调用我的主类中的方法
同一个包中的两个类 具有公共静态变量和实例变量组合的主类。 它创建一个名为instance的类实例 另一个类登录,不是一个子类,做它的业务,但我想从guiInstance从main调用一个方法 问题是,我似乎无法让它工作,我无法让登录类找到gui实例或类的任何方法,尽管它们是公共的 我刚刚用我想要的配置制作了一个新的包,显然我对调用方法的工作原理有错误的想法Java从另一个类调用我的主类中的方法,java,swing,methods,main,invoke,Java,Swing,Methods,Main,Invoke,同一个包中的两个类 具有公共静态变量和实例变量组合的主类。 它创建一个名为instance的类实例 另一个类登录,不是一个子类,做它的业务,但我想从guiInstance从main调用一个方法 问题是,我似乎无法让它工作,我无法让登录类找到gui实例或类的任何方法,尽管它们是公共的 我刚刚用我想要的配置制作了一个新的包,显然我对调用方法的工作原理有错误的想法 public class GUI { JPanel jp = new JPanel(); public static
public class GUI {
JPanel jp = new JPanel();
public static void main(String[] args) {
GUI instance = new GUI();
}
public void ping(){
System.out.println("that worked");
}
}
public class Login extends JPanel {
/** Creates new form Login */
public Login() {
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() {
jButton1 = new javax.swing.JButton();
jButton1.setText("jButton1");
jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton1MouseClicked(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(112, 112, 112)
.addComponent(jButton1)
.addContainerGap(215, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(46, 46, 46)
.addComponent(jButton1)
.addContainerGap(231, Short.MAX_VALUE))
);
}// </editor-fold>
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
instance.ping();
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}
在main方法中有一个GUI实例,但似乎没有创建Login实例。我建议您将GUI实例传递给您的登录构造函数,以便在登录中添加如下内容-
private GUI gui = null;
public Login(GUI gui) {
this.gui = gui;
initComponents();
}
然后大体上你可以这样做
public static void main(String[] args) {
GUI instance = new GUI();
Login login = new Login(instance);
// next I believe you need to make your Frame and components visible
}
请注意,这不是我以前做过的事情,在你不知道它叫什么的时候,用谷歌搜索你认为应该发生的事情是不可能的。现在一切似乎都很简单!谢谢吹毛求疵:虽然我个人肯定是正确的,但我更愿意为登录传递某种类型的界面,这样就不会暴露登录不需要知道或应该能够访问的GUI元素。请问,您有实现这些的代码指针吗?