저는 최근에 자바로 장난하고 있었고 저는 작은 게임을 개발하려고합니다. 문제는, 사용하고있는 JViewport가 갱신되지 않는다는 것입니다. 뷰포트에서 다시 그리기 메서드를 호출하면 뷰포트가 올바른 위치에서 깜박이고 뷰포트에 표시되는 전체 이미지가 배경에 그려지고 제대로 작동합니다. Viewport 전체를 그리는 것이 아니라 어떻게 뷰포트를 페인트합니까? 답변을위한 Thx;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());
}
}
: 스크롤의 구성 요소를 업데이트하려면 당신이 모든 스크롤의 뷰포트에 구성 요소를 추가합니다. – MadProgrammer