在JFrame中显示.png图像?

我有点卡住了。 为什么不这样做? 我只是得到一个错误说:

java.lang.NoSuchMethodError:main

线程“main”中的exception

import java.awt.*; import javax.swing.*; @SuppressWarnings("serial") public class ShowPNG extends JFrame { public void main(String arg) { if (arg == null ) { arg = "C:/Eclipse/workspace/ShowPNG/bin/a.png"; } JPanel panel = new JPanel(); panel.setSize(500,640); panel.setBackground(Color.CYAN); ImageIcon icon = new ImageIcon(arg); JLabel label = new JLabel(); label.setIcon(icon); panel.add(label); this.getContentPane().add(panel); this.setVisible(true); } } 

main需要是static,并且必须有String []的参数,而不是String。

要在构造函数中修复此内容,例如

 import java.awt.*; import javax.swing.*; @SuppressWarnings("serial") public class ShowPNG extends JFrame { private ShowPNG(String arg){ if (arg == null ) { arg = "C:/Eclipse/workspace/ShowPNG/bin/a.png"; } JPanel panel = new JPanel(); panel.setSize(500,640); panel.setBackground(Color.CYAN); ImageIcon icon = new ImageIcon(arg); JLabel label = new JLabel(); label.setIcon(icon); panel.add(label); this.getContentPane().add(panel); } public static void main(String[] args) { new ShowPNG(args.length == 0 ? null : args[0]).setVisible(true); } } 

你的主要方法应该是:

 public static void main(String[] args) 

这是完成的代码:

 import java.awt.*; import javax.swing.*; @SuppressWarnings("serial") public class ShowPNG extends JFrame { public ShowPNG(String argx) { if ( argx == null ) { argx = "a.png"; } this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(500,640); JPanel panel = new JPanel(); //panel.setSize(500,640); panel.setBackground(Color.CYAN); ImageIcon icon = new ImageIcon(argx); JLabel label = new JLabel(); label.setIcon(icon); panel.add(label); this.getContentPane().add(panel); } public static void main(String[] args) { new ShowPNG(args.length == 0 ? null : args[0]).setVisible(true); } }