У меня есть неэффективный код прямоугольной волны. У меня есть 2 кнопки, 1 таблица и что-то вроде системы координат, в которой появляется квадрат. Я хочу, чтобы волна прокручивалась/двигалась в реальном времени, пока она не попала в конец системы координат, вместо того, чтобы просто появляться, выбрав обе кнопки. Кроме того, если у кого-то есть лучший способ рисовать квадратную волну, пожалуйста, скажите мне.Создание прямоугольной волны в JFrame
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawLine(20, 300, 20, 450);
g2d.drawLine(20, 350, 400, 350);
g2d.drawLine(20, 400, 400, 400);
g2d.drawLine(20, 450, 400, 450);
if (this.jButtonSTART.isSelected() & this.jButtonAND.isSelected()) {
this.draw(g2d);
}
}
public void draw(Graphics2D g2d) {
boolean up = true;
while (x <= 380) {
g2d.setColor(Color.blue);
if (x > 0 && x % 95 == 0) {
up = !up;
g2d.drawLine(20 + x, up ? 315 : 350 + y, 20 + x, up ? 350 : 315 + y);
} else {
if (up) {
g2d.drawLine(20 + x, 315 + y, 21 + x, y + 315);
} else {
g2d.drawLine(20 + x, 350 + y, 21 + x, y + 350);
}
}
x++;
}
x = 0;
}
Действия вашего таймераПередформированный метод должен сбрасывать значение imageX всякий раз, когда он достигает полной длины волны. и вы также должны добавить компонент ComponentListener, метод componentResized() повторно создает изображение для нового размера компонента. – FredK
@FredK: true, или для моей примерной программы (см. Выше), я просто фиксирую размер графического интерфейса. –
@Hovercraft Full of Eels Большое спасибо за помощь! Я на самом деле просто новичок, поэтому мне сложно понять ваши шаги. Вы потеряли меня после второго шага. Не могли бы вы быть более сложными? Я предполагаю, что вы хотели, чтобы я создал метод paintComponent, потому что я didn – Nest