Я пытаюсь работать с утилитой Java paint , и это было немного хлопот.Обновление графики графики/перерисовывание графики
Я пытаюсь сделать что-то, что я предполагаю, является довольно простым. Я рисую квадрат Graphic к JPanel, а затем пытается переместить его с помощью перекрашивать
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class testGui {
static gui gc_gui;
static int gv_x;
static int gv_y;
public static void main(String[] args) {
gc_gui = new gui();
gv_x = 50;
gv_y = 50;
gc_gui.cv_frame.setVisible(true);
}
public static class gui {
JFrame cv_frame;
content cv_content;
public gui() {
cv_frame = new JFrame();
cv_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cv_frame.setTitle("Test GUI");
cv_frame.setSize(600, 400);
cv_frame.setLayout(new FlowLayout());
cv_content = new content();
cv_content.setBackground(Color.Black);
cv_content.setPreferredSize(new Dimension(500, 300));
cv_frame.add(cv_content);
gv_x = 0;
gv_y = 0;
cv_content.update();
}
}
public static class content extends JPanel {
public void paint(Graphics graphic) {
super.paint(graphic);
draw(graphic);
}
public void update() {
super.repaint();
}
public void draw(Graphics graphic) {
Graphics2D graphic2D = (Graphics2D) graphic;
graphic2D.setPaint(Color.Red);
graphic2D.fillRect(gv_x, gv_y, 100, 100);
}
}
}
Я не знаю, почему вызов функции обновления не делает ничего хотя.
Он рисует квадрат в 50х и 50Y, множества его 0x и 0y немедленно, а затем, когда я звоню перекрашивать я ожидал, что он быть перемещен в его новые координаты, хотя она по-прежнему в 50x и 50Y.
Почему это?
Вы не можете сделать это, используя основной протектор. Таким образом, вам нужен новый протектор, способный переместить этот квадрат. – ziLk
Используйте качающийся таймер или прослушиватель событий для перемещения квадрата. –
В стороне, вы захотите изучить и использовать [Соглашения об именах Java] (http://en.wikipedia.org/wiki/Naming_convention_ (программирование) #Java). Имена переменных должны начинаться с нижней буквы, а имена классов - с буквой верхнего регистра. Изучение этого и последующее это позволит нам лучше понять ваш код и позволит вам лучше понять код других. –