Я пытаюсь создать большую игровую доску, чтобы только часть ее была видна в окне просмотра и хотела бы иметь возможность перемещать область просмотра с помощью клавиш со стрелками, чтобы увидеть всю доску.Прямо сейчас у меня есть JScrollPane, который содержит JPanel, который будет иметь изображения, текст и другие вещи, но они не имеют значения.Прямо сейчас у меня есть ImageIcon того же размера, что и JPanel в качестве фона, и я хотел бы иметь возможность перемещать область просмотра с помощью клавиш, и не иметь никаких видимых полос прокрутки.Я попытался вызвать getViewPort (). SetViewPosition (), а затем revalidate () на JPanel и JScrollPane.Но это все равно не работает.Мой код ниже
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.*;
import java.awt.event.*;
public class Game extends JPanel {
JPanel game = new JPanel();
JScrollPane scrollPane = new JScrollPane(game);
JLabel grass = new JLabel();
private KeyListener keys = new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
System.out.println("Down");
scrollPane.getViewport()
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
System.out.println("up");
}
revalidate();
}
public void keyPressed(KeyEvent e) {
}
};
public void createGame(int turns) {
int gameWidth = 1800;
int gameHeight = 1600;
int viewPortWidth = 800;
int viewPortHeight = 600;
//setLayout(null);
setSize(new Dimension(viewPortWidth, viewPortHeight));
game.setLayout(null);
game.setSize(new Dimension(gameWidth, gameHeight));
//add the background image
ImageIcon background = new ImageIcon("Grass.png");
grass.setIcon(background);
grass.setBounds(0,0, gameWidth, gameHeight);
game.setBackground(Color.GREEN);
game.add(grass);
game.setBounds(0,0, gameWidth, gameHeight);
//key listener
game.addKeyListener(keys);
//add(game);
scrollPane.setPreferredSize(new Dimension(viewPortWidth, viewPortHeight));
add(scrollPane);
}
}