Добрый день. Есть изображение, и методы paintComponent(Graphics g) и repaint(). Так вот: изображение рисуется только при если вручную менять размер окна мышкой, а я хочу что бы сразу. По идее для этого нужно поместить repaint() в конструктор, но это не работает( Структура проги: основной класс MainWindow extends JFrame, из него создается класс GameField extends JPanel, и в этом GameField созданы методы paintComponent(Graphics g) и repaint(). Изображение рисуется внутри метода paintComponent.
package com.company;
import javax.swing.*;
public class MainWindow extends JFrame {
public static final double VERSION = 0.1;
public MainWindow() {
setTitle("... " + VERSION);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1024, 768);
setVisible(true);
setLocation(400,100);
add(new GameField()); // it extends JPanel
}
public static void main(String[] args) {
MainWindow mainWindow = new MainWindow();
}
}
Класс GameField:
package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class GameField extends JPanel implements ActionListener {
private final int SPEED = 5;
private int shipX, shipY;
private int asteroidX, asteroidY;
private Image ship;
private Image asteroid;
private Image shot;
public GameField(){
setBackground(Color.black);
loadImages();
repaint();
}
public void loadImages(){
ImageIcon shipIcon = new ImageIcon("ship.png");
ship = shipIcon.getImage();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(ship,500, 500, this);
}
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
}
Метод setVisible(true)
у JFrame
нужно вызывать в самую последнюю очередь. В вашем же случае вы сначала заставляете фрейм отрендерится, а уже потом наполняете его содержимым, должно быть наоборот.
public MainWindow() {
setTitle("... " + VERSION);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1024, 768);
setLocation(400,100);
add(new GameField());
setVisible(true);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Взял тут в руки книжку (Кен Арнольд, Джеймс Гослинг - Язык программирования JAVA), и застрял в самом начале
Слетела кодировка ,стоит utf-8,а щас просто вопросикиОткрыл файл ,чтобы просто картинки в HTML поменять и слетела кодировка,я сохранил и она на сайте...
Есть 2 сцены, первая меню а вторая сама игра, есть масcив которому даю значения через едитор, если запускаю сразу сцену игры то всё нормально...
Есть простое ASP приложение на котором нужно вывести очень большую таблицуНа форме расположен грид вью: