gpt4 book ai didi

java - 非静态方法问题

转载 作者:行者123 更新时间:2023-12-01 18:46:39 25 4
gpt4 key购买 nike

我知道有很多关于这个问题的帖子,我读了很多,但我无法解决我的问题。
我会尽力以最好的方式提出问题,以免造成太大麻烦。

嗯,我有两个 JPanel,我想获取一个显示在应用程序中的 JPanel (JCatalog),以便从另一个 JPanel (JPanelTicket) 对其进行修改。

现在,当我调用 JCatalog 的 getComponent 方法时,它显示无法从静态上下文中引用非静态方法
我会尝试我所知道的一切,并且进行了很多搜索,但我不知道如何解决这个问题。

这是我的源代码:

J目录:

package newpackage;
import java.awt.Component;

public class JCatalog extends javax.swing.JPanel {


public JCatalog() {
initComponents();
}

public Component getComponent() {
return this;
}

JPanelTicket:

package javaapplication5;
import javax.swing.JPanel;
import newpackage.JCatalog;


public abstract class JPanelTicket extends JPanel {

JCatalog jcat;

public JPanelTicket() {
initComponents();
}

public void init(){
jcat = (JCatalog) JCatalog.getComponent(); //Here's the problem
}

最佳答案

您不能使用类调用非静态方法,例如 JCatalog.getComponent()

非静态方法只能通过实例调用jcat.getComponent()

我发现您维护了一个名为 jcatJCatalog 类型的引用。确保在某处初始化它或使用setter方法设置实例。并使用该实例调用getComponent()方法

public abstract class JPanelTicket extends JPanel {

JCatalog jcat;

public JPanelTicket() {
jcat = new JCatalog();
initComponents();
}

public void init(){
jcat = jcat.getComponent(); //Here's the problem
}
}

或者

public abstract class JPanelTicket extends JPanel {

JCatalog jcat;

public JPanelTicket() {
initComponents();
}

public void init(){
jcat = jcat.getComponent(); //Here's the problem
}

public void setJCatalog(JCatalog jcat) {
this.jcat = jcat;
}
}

关于java - 非静态方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17543307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com