gpt4 book ai didi

java - 不能引用非静态方法且不允许使用 void 类型

转载 作者:行者123 更新时间:2023-12-01 15:28:45 27 4
gpt4 key购买 nike

当我输入t.schedule(umm.setVisible(false), 5);时我收到该错误并且不允许使用 void 类型。有人可以帮我解决这个问题吗?

public class menu extends JFrame{
JLabel bgmenu=new JLabel();
JLabel java=new JLabel();
JLabel umm=new JLabel();
JLayeredPane jLayeredPane1=new JLayeredPane();

public menu(){

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

//label
umm.setIcon(new javax.swing.ImageIcon("D:\\Job\\Kuliah\\4\\DAMG\\Game\\pic\\umm.jpg"));
umm.setBounds(0, 0, 1024, 709);
java.setIcon(new javax.swing.ImageIcon("D:\\Job\\Kuliah\\4\\DAMG\\Game\\pic\\java.jpg"));
java.setBounds(0, 0, 1024, 709);
bgmenu.setIcon(new javax.swing.ImageIcon("D:\\Job\\Kuliah\\4\\DAMG\\Game\\pic\\interfacemainmenu.jpg"));
bgmenu.setBounds(0, 0, 1024, 709);

//posisi
jLayeredPane1.add(umm, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane1.add(java, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane1.add(bgmenu, javax.swing.JLayeredPane.DEFAULT_LAYER);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 1024, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 709, javax.swing.GroupLayout.PREFERRED_SIZE)
);

pack();
}
public static void main(String[] args) {
new menu().setVisible(true);
Timer t=new Timer();
//get error here under this comment
t.schedule(umm.setVisible(false), 5);
}

最佳答案

Timer.schedule() 的第一个参数应该是 TimerTask。您正在传递 void (即 umm.setVisible() 的结果)

您需要将 setVisible() 包装到 TimerTask 的 run() 方法中。

刚刚输入此内容,未经测试,因此某些细节可能值得怀疑,但我认为它接近您所需要的。我确信那里有很多“真实”的例子......

class MyTimer extends TimerTask
{
private menu theMenu = null;
public MyTimer(Menu m)
{
this.theMenu = m;
}
public void run()
{
// you need to add
// public void setUmmVisibility(boolean s)
// { this.umm.setVisible(s); }
// to the menu class.
this.theMenu.setUmmVisibility(false);
}
}

public static void main(String[] args) {
menu m = new menu();
m.setVisible(true);
Timer t=new Timer();
t.schedule(new MyTimer(m, 5);
}

关于java - 不能引用非静态方法且不允许使用 void 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832440/

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