我试图更新我的外观和感觉没有任何错误,但我无法弄清楚我做错了什么。
这是我的Window类:
public class Window extends JFrame {
private static final long serialVersionUID = 1L;
public Window() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new MigLayout());
setExtendedState(JFrame.MAXIMIZED_BOTH);
setMinimumSize(new Dimension(600, 700));
setVisible(true);
setContentPane(new JPanel() {
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g) {
g.drawImage(new ImageIcon("start.jpg").getImage(), 0, 0, getWidth(),
getHeight(), this);
}
});
}
}
这是我更新UI(外观和感觉)的主要内容
public class Main {
public static void main(String[] args) {
Window.setDefaultLookAndFeelDecorated(true);
try {
UIManager.setLookAndFeel(new SubstanceGraphiteLookAndFeel());
}
catch (UnsupportedLookAndFeelException e) {}
Window window = new Window();
}
}
控制台说我的错误来自这一行: 窗口窗口=新窗口();
然后这一行:setContentPane(new JPanel(){
但是如果我删除整个setContentPane bloc,则错误指向构造函数。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:3)
SubstanceGraphiteLookAndFeel()必须包装到invokeLater()
窗口窗口=新窗口(); shold被包装到invokeLater()中,更多参见Oracle教程初始线程
g.drawImage(new ImageIcon(“start.jpg”)。getImage(),0,0,getWidth(),getHeight(),this);
使用BufferedImage,加载为本地变量
从API中实现的每个鼠标,键事件和内部方法调用paintComponent,然后非常努力和长时间ImageIcon(“start.jpg”)。getImage()被重复调用,任何事件被触发多少次重拍,
加载到本地变量
setContentPane(new JPanel(){,覆盖getMin/Max/PreferredSize