我刚开始学习Java图形。有人可以解释一下 super() 和 JFrame 之间有什么不同吗?当我使用 super() 时,我可以绘制图形,但我无法在 JFrame 中绘制。
public class Screen extends JFrame {
public JFrame fra = new JFrame();
private static final long serialVersionUID = 1L;
BufferedImage img=null;
public void paint(Graphics g){
try{
img=ImageIO.read(new File("D:/strawberry.jpg"));
}catch (IOException e){}
try{
g.drawImage(img, 100,100, null);
}catch (Exception e){}
}
public Screen()
{
/*
super ("kingdom");
setSize(700,700);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
*/
// normal JFrame--------------------------------------------------
fra.setTitle("kingdom");
fra.setSize(600,600);
fra.setResizable(false);
fra.setDefaultCloseOperation(EXIT_ON_CLOSE);
JMenuBar bar = new JMenuBar();
JMenu file = new JMenu("File");
JMenu edit = new JMenu("Edit");
JMenu option = new JMenu("Option");
JMenuItem open = new JMenuItem("Open");
JMenuItem save = new JMenuItem("Save");
JMenuItem exit = new JMenuItem("Exit");
JMenuItem controlkey = new JMenuItem("Control key");
JMenuItem sound = new JMenuItem("Sound");
fra.setJMenuBar(bar);
bar.add(file);
bar.add(edit);
bar.add(option);
file.add(open);
file.add(save);
file.add(exit);
edit.add(controlkey);
edit.add(sound);
fra.setVisible(true);
//-------------------------------------------------------------
}
public static void main(String[] a){
new Screen();
}
}
在扩展JPanel
的类中进行绘图,然后将该类的实例设置为框架的内容窗格,或将其添加到适合您的内容窗格中。当然,您也可以使用扩展裸JComponent
的类来执行此操作。
该类中的绘图将在 paintComponent
的覆盖中完成。