У меня есть класс, где я загружаю отображение данных о погоде и хочу отображать анимацию загрузки при загрузке дисплея.
Вот исходный код:
DrawFrame(JSONArray weather, String button) {
this.weather = weather;
drawPanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
switch (button) {
case MainFrame.hourly1ButtonValue:
hourly1 = (Graphics2D) g;
drawHourly1();
break;
case MainFrame.hourly12ButtonValue:
hourly12 = (Graphics2D) g;
drawHourly12();
break;
case MainFrame.index5ButtonValue:
stargazing = (Graphics2D) g;
drawStargazing();
break;
}
}
};
KeyListener kl=new KeyAdapter()
{
public void keyPressed(KeyEvent evt)
{
//If someone click Esc key, this program will exit
if(evt.getKeyCode()==KeyEvent.VK_ESCAPE)
{
System.exit(0);
}
}
};
JFrame frame = new JFrame("Wetteranzeige");
//frame.setUndecorated(true);
frame.add(drawPanel);
frame.setPreferredSize(new Dimension(dimension.width, dimension.height));
//frame.addKeyListener(kl);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
иэто один из методов, который я использую для отображения одной погоды. Дисплей:
private void drawStargazing() {
Integer[][] coordinates = new Integer[2][5];
coordinates = coordinates5DaysIndex();
drawPanel.setBackground(Color.black);
int i = 0;
int j = 0;
int k = 1;
int x;
int y;
while (i <= 4) {
x = coordinates[0][i];
y = coordinates[1][i];
stargazing.drawImage(toolkit.getImage(getClass().getResource("images/stern_t.png/")), x - 20, y - 20, drawPanel);
i++;
Stroke stroke = new BasicStroke(5);
stargazing.setStroke(stroke);
}
while (k >= 1 && j <= 3) {
int xEnde = coordinates[0][k];
int yEnde = coordinates[1][k];
int xStart = coordinates[0][k - 1];
int yStart = coordinates[1][k - 1];
stargazing.setColor(Color.white);
stargazing.drawLine(xStart, yStart, xEnde, yEnde);
j++;
k++;
}
}
производит примерно так: 1
, когда я добавляю gifон зацикливается бесконечно, а не один раз, поэтому я подумал, что могу вручную нарисовать рисунок, установив каждый кадр (в моем случае изменив положение значка), но я не могу понять, как правильно перекрасить с помощью таймера в соответствии с моей конструкцией рисованияздесь ...
Мне не удается заставить его работать, как в этом примере: https://docs.oracle.com/javase/tutorial/uiswing/painting/step3.html
Так у кого-нибудь есть решение для меня?Ваша помощь будет принята с благодарностью!