Ich habe kürzlich mit Java rumspielen und ich versuche, ein kleines Spiel zu entwickeln. Das Problem ist, dass der JViewport, den ich verwende, nicht aktualisiert wird. Wenn Sie die Repaint-Methode im Viewport aufrufen, flackert das Viewport an der richtigen Position und das gesamte Bild, das von Viewport angezeigt wird, wird im Hintergrund gezeichnet und funktioniert einwandfrei. Wie male ich nur den Viewport, nicht den ganzen Rest? Thx für Antworten;Wie update ich JViewPort
public start() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension my = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
Rectangle myrec = new Rectangle(0,0,my.width, my.height);
setBounds(myrec);
this.setUndecorated(true);
JPanel Background = new JPanel();
Background.setBounds(myrec);
Background.setLayout(null);
setContentPane(Background);
JScrollPane map = new JScrollPane();
map.setBounds(0, 0, 3000, 3000);
map.setLayout(null);
//setContentPane(map);
gameoberflaeche MainMap = new gameoberflaeche();
MainMap.setBounds(0,0, map.getWidth(), map.getHeight());
MainMap.setup();
map.add(MainMap);
Viewport currview = new Viewport(myrec, MainMap.player_1, map);
Background.add(currview);
//setContentPane(currview);
int delay = (1000/30);
ActionListener update = new ActionListener(){
public void actionPerformed(ActionEvent evt) {
MainMap.Anfang.checkdead();
//currview.stats.update();
//currview.weaponpanel.update();
//currview.MagPanel.update();
currview.update(MainMap.player_1.field.x, MainMap.player_1.field.y);
}
};
new Timer(delay, update).start();
}
public class Viewport extends JViewport{
Player myplayer;
statpanel stats;
Magazin MagPanel;
Waffenpanel weaponpanel;
Rectangle myrec;
public Viewport(Rectangle myrec, Player myp, JScrollPane myview) {
setView(myview);
reshape(0,0,myrec.width,myrec.height);
}
public void update(int x, int y) {
// System.out.println(getView());
setViewPosition(new Point(x,y));
System.out.println(x + " " + y + " " + getViewRect());
}
}
Sie verpassen den 'JScrollPane' verwenden und wahrscheinlich auch die' JViewport'. – MadProgrammer