package cn.javass;import java.awt.*;;public class MyFrame extends Frame { public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame myFrame = new MyFrame();
myFrame.setSize(500, 500);
myFrame.setLocation(100,100);
myFrame.setBackground(Color.red);
Panel myPanel = new Panel();
myPanel.setBackground(Color.black);
Button myButton =new Button("Test");
myButton.setBackground(Color.red);
myPanel.add(myButton);
myFrame.add(myPanel);
MyCanvas myCanvas = new MyCanvas();
myCanvas.setBackground(Color.white);
myFrame.add(myCanvas);
myFrame.setVisible(true);
}
class MyCanvas extends Canvas{ @Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
}
}}
求助大家 这个MyCanvas 写成内部类为什么会错
我将MyCanvas写成外部类 就对了 这是为什么呢
// TODO Auto-generated method stub
MyFrame myFrame = new MyFrame();
myFrame.setSize(500, 500);
myFrame.setLocation(100,100);
myFrame.setBackground(Color.red);
Panel myPanel = new Panel();
myPanel.setBackground(Color.black);
Button myButton =new Button("Test");
myButton.setBackground(Color.red);
myPanel.add(myButton);
myFrame.add(myPanel);
MyCanvas myCanvas = new MyCanvas();
myCanvas.setBackground(Color.white);
myFrame.add(myCanvas);
myFrame.setVisible(true);
}
class MyCanvas extends Canvas{ @Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
}
}}
求助大家 这个MyCanvas 写成内部类为什么会错
我将MyCanvas写成外部类 就对了 这是为什么呢
因为它是public的
你的答案 貌似与结果相悖
import java.awt.*;;public class MyFrame extends Frame { class MyCanvas extends Canvas{ @Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame myFrame = new MyFrame();
myFrame.setSize(500, 500);
myFrame.setLocation(100,100);
myFrame.setBackground(Color.red);
Panel myPanel = new Panel();
myPanel.setBackground(Color.black);
Button myButton =new Button("Test");
myButton.setBackground(Color.red);
myPanel.add(myButton);
myFrame.add(myPanel);
MyCanvas myCanvas = new MyFrame().new MyCanvas();
myCanvas.setBackground(Color.white);
myFrame.add(myCanvas);
myFrame.setVisible(true);
}
}
import java.awt.*;
public class MyFrame extends Frame {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame myFrame = new MyFrame();
myFrame.setSize(500, 500);
myFrame.setLocation(100, 100);
myFrame.setBackground(Color.red); Panel myPanel = new Panel();
myPanel.setBackground(Color.black); Button myButton = new Button("Test");
myButton.setBackground(Color.red);
myPanel.add(myButton);
myFrame.add(myPanel); MyCanvas myCanvas = new MyCanvas();
myCanvas.setBackground(Color.white);
myFrame.add(myCanvas); myFrame.setVisible(true);
} static class MyCanvas extends Canvas {
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
}
}}
静态方法不能直接调用非静态的。
这里我把那个内部类该成了静态内部类了。
楼主记得给分。
MyCanvas (extends Canvas) 应该是和Button一个级别的 。硬要说他们都应该定义在类外部。
但是为什么不能定义在内部呢?