Успешно обновляется внешний вид, но все еще возникают ошибки
Я пытаюсь обновить свой внешний вид без каких-либо ошибок, но я не могу понять, что я делаю неправильно.
Это мой класс 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);
}
});
}
}
И это мое главное, где я обновляю интерфейс (смотри и чувствуй)
public class Main {
public static void main(String[] args) {
Window.setDefaultLookAndFeelDecorated(true);
try {
UIManager.setLookAndFeel(new SubstanceGraphiteLookAndFeel());
}
catch (UnsupportedLookAndFeelException e) {}
Window window = new Window();
}
}
Консоль говорит, что моя ошибка происходит из этой строки: Window window = new Window();
Тогда эта строка: setContentPane(new JPanel() {
Но если я удаляю весь блок setContentPane, ошибка затем указывает на конструктор.
Любая помощь будет оценена. Спасибо!
1 ответ
SubstanceGraphiteLookAndFeel() должен быть заключен в invokeLater()
Окно окно = новое окно (); Должен быть заключен в invokeLater(), подробнее см. в учебнике по Oracle Initial Thread
g.drawImage (new ImageIcon("start.jpg").getImage(), 0, 0, getWidth (), getHeight (), this);
использовать BufferedImage, загрузить в качестве локальной переменной
paintComponent вызывается из каждой мыши, ключевых событий и внутренних методов, реализованных в API, затем довольно сложно и долго вызывается ImageIcon("start.jpg").getImage(), сколько раз любое событие вызывается для перерисовки,
загрузить в локальную переменную
setContentPane(new JPanel() {, переопределить getMin/Max/PreferredSize