Я использовал дважды связанные списки, чтобы создать эту движущуюся синусовую кривую (код может быть чрезвычайно примитивным и дезорганизованным, но это всего лишь первый черновик, и я едва знаю, как использовать Swing.):Перемещение кривой синуса в Swing/AWT GUI
import java.awt.*;
import javax.swing.JFrame;
public class DisplayGraphics extends Canvas{
public void paint(Graphics g) {
setForeground(Color.RED);
this.setSize(720,440);
class list {
int pos;
list next;
list prev;
list(){
int pos;
list next ;
list prev;
}
list(int pos){
this.pos = pos;
}
list(int pos, list next){
this.pos = pos;
this.next = next;
}
public void setpos(int pos){
this.pos= pos;
}
public void setnext(list next){
this.next= next;
next.prev=this;
}
public void display(list head){
list tracker = head;
int y;
//displays the sincurve momentarily
for (int i = 1;i<721; i++){
y = (int)(Math.sin(Math.toRadians(tracker.pos))*200)+200;
g.fillOval(i,y,3,3);
tracker = tracker.next;
}
}
}
list temp = new list();
temp.setpos(1);
list head = temp;
for (int i =2; i<720; i++){
list thing = new list();
thing.setpos(i);
temp.setnext(thing);
temp = thing;
}
list tail = new list(720);
temp.setnext(tail);
tail.setnext(head);
//creates the moving display
boolean run = true;
while(run==true){
head.display(head);
//try {
//Thread.sleep(10);
//} catch(InterruptedException ex) {
// Thread.currentThread().interrupt();
//}
g.clearRect(0, 0, getWidth(), getHeight());
head = head.next ;
}
}
public static void main(String[] args) {
DisplayGraphics m=new DisplayGraphics();
JFrame f=new JFrame();
f.add(m);
f.setSize(720,400);
//f.setLayout(null);
f.setVisible(true);
}
}
Однако программа не работает очень плавно. Есть ли какие-либо предложения, чтобы заставить его работать быстрее и плавно?
Вы можете сделать прямо одно из следующих действий: возьмите 'class list {...}' из метода рисования. то instanciate объект только один раз, за пределами метода краски ... ах ждать, что это слишком сложно ответить в комментарии, я отправлю ответ ... –
жаль, что я так медленно отвечал ... @AndrewThompson указал из многих вопросов мой ответ выглядит сейчас очень плохим ... спасибо, что ты это сделал^^^ –