import java.applet.*;
import java.awt.*;
import java.util.*;
import java.text.*;
public class MyClock extends Applet {
MyPanel mp;
public void init() {
mp = new MyPanel(getParameter("format"));
add(mp);
}
}
class MyPanel extends Panel {
MyClockThread mct;
Color b, f;
SimpleDateFormat formatter;
String previousDateText = "";
String dateText;
MyPanel(String df) {
super();
formatter = new SimpleDateFormat(df);
validate();
setBackground(new Color(0).black);
setForeground(new Color(0).yellow);
b = this.getBackground();
f = this.getForeground();
mct = new MyClockThread(this);
mct.start();
}
public Dimension getPreferredSize() {
return new Dimension
(this.getFontMetrics(this.getFont()).stringWidth(getNow()) + 25, 30);
}
public void paint(Graphics g) {
if (g != null) {
g.setColor(b);
g.drawString(previousDateText,10,15);
g.setColor(f);
dateText = getNow();
g.drawString(dateText,10,15);
previousDateText = dateText;
}
}
public String getNow() {
return formatter.format(new Date());
}
}
class MyClockThread extends Thread {
MyPanel mp;
public MyClockThread(MyPanel a) {
mp = a;
}
public void run() {
while (true) {
try {
mp.repaint();
this.sleep(1000);
}
catch(InterruptedException e) { }
}
}
public static void main(String[] args)
{
run();
}
}
自己在网上看到的一个小程序,刚抄下来时提示没有main函数,加了一个之后出错,错误代码是无法从静态上下文中引用非静态 方法run,求各位大神解答
æç¨å¾®åäºä¸ä¿®æ¹ï¼
import java.applet.*;å¦å¤è¿éèªå·±æ°å»ºä¸ä¸ªHTML页é¢ï¼
MyClock.html
<html>ä¸è¬å å¨å½ä»¤è¡ç¼è¯javaç±»æ件ï¼å»ºè®®å°æ¯ä¸ªç±»åç¬å»ºä¸ä¸ªæ件ï¼ä¾¿äºå¨å½ä»¤è¡ç¼è¯ï¼ï¼ç±äºAppletæ¯ä¸éè¦mainå½æ°çï¼å æ¤ä¹å°±æ²¡æå¿ è¦å¨javaæ件ä¸ä½¿ç¨è¯¥å½æ°ãç¼è¯ä¹åï¼ç´æ¥ä½¿ç¨
appletviewer MyClock.htmlå½ä»¤ï¼æ²å车å³å¯ï¼æç»è¿è¡é¡µé¢ä¸ºï¼
å¸æå¯¹ä½ å¦ä¹ ç¼ç¨ææ帮å©ï¼
java无法从静态上下文引用非静态方法
具体来说,当我们在静态方法中尝试引用非静态成员变量时,编译器会抛出错误,原因是静态方法没有对象实例可供引用非静态成员方法。如果静态方法试图访问非静态成员变量,它实际上是在询问“哪个对象的变量?”,而没有明确的对象实例,因此编译器无法确定正确的引用,从而引发错误。简单总结,静态方法与非静态...
java中“无法从静态上下文中引用非静态变量”为什么?理由是什么?_百度...
静态变量是在类加载的时候创建的并赋值的,因此在一个动态方法里使用静态变量时可以的;静态上下文(静态代码块)也是在类加载时执行的,而非静态变量都是在类加载完成后再赋值的,如果能在静态块中使用非静态变量,就会因为该变量的空指针而抛异常(可能还不只这点问题,只是举个例)。JAVA类的加载机...
错误: 无法从静态上下文中引用非静态方法
由于main方法其实是一个静态方法,而maxProfit方法并没有实例化,所以会报错 错误: 无法从静态上下文中引用非静态 变量 this 修改方法:只需要实例化调用的静态变量所属对象即可。
无法从静态上下文中引用非静态 变量this为什么?怎么改?谢了 !_百度...
在静态成员函数里面是不允许访问实例的this变量的:f.addWindowListener(new (this));你应该把 my 设计成单例模式的类 public class my extends WindowsAdapter { static my instance;public static my getInstance() { if (instance == null) instance = new my();return instance;} private my()...
java中“无法从静态上下文中引用非静态变量”为什么?理由是什么?_百度...
静态上下文(静态代码块)也是在类加载时执行的,而非静态变量都是在类加载完成后再赋值的,如果能在静态块中使用非静态变量,就会因为该变量的空指针而抛异常(可能还不只这点问题,只是举个例)。JAVA类的加载机制就决定了无法从静态上下文中引用非静态变量。
错误: 无法从静态上下文中引用非静态 变量 this
this 是指向当前对象的引用,需要对象实例化以后才能赋值。而静态成员都是类所属的,不需要对实例化就可以使用,所以在静态上下文中引用this时可能其还未赋值,所以应不能这样使用。
无法从静态上下文中引用非静态变量
你好:你的方法都是静态的(static),变量是非静态的,静态方法只能调用静态变量,所以把你类开头定义的那些变量改成静态的就行了
...无法从静态上下文中引用非静态变量。等大虾解释,谢谢!
在java中无法在静态方法中调用非静态的变量,主要是因为静态时属于类的,而非静态是属于对象的,当你调用静态方法调用时,对象是否创建,变量是否初始化,是不是需要考虑?所以在java中,无法判断是否非静态的变量是否存在,即静态方法不能调用非静态变量,用现实的例子举证也是,比如你现在想调用你未来的...
...程序出现了问题:无法从静态上下文中引用非静态变量subName和fpi...
因此在一个静态的方法中是不能直接访问非 static 变量,我们必须知道你想访问的是哪个对象实例的状态,也就是说我们必须用 myInstance.fieldA 这种方法来访问,这也要求我们手上必须有一个对象实例。所以你的代码中:Sub sub=new Sub();System.out.println("Sub.subName= "+Sub.subName);这个 Sub...
“无法从静态上下文中引用非静态方法”这个问题怎么解决?
解决方法:可以去除一般方法的static关键字(如果是main方法,则不能去掉static)。另外一种方法就是把需要引用的方法也设置成静态方法。用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。 静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于...