[英]How can I make painted graphics in a JPanel scrollable?
我正在改版棋盘游戏。 将通过重写paintComponent(Graphics g)
方法在JPanel上绘制该板。 该开发板可能大于其所绘制的JPanel的大小,因此我计划使用JScrollPane
允许用户在整个开发板上滚动以查看它。 举例来说,我将板子做成一个大矩形,看是否可以使它在那上面滚动,但无济于事。 我以前曾经成功使用过JScrollPane
,但我不知道为什么这种情况与我以前使用的方式有什么不同。
谁能看到为什么它无法正常工作?
这是游戏的JFrame的代码:
public class GameFrame extends JFrame{
JPanel playerDeckPanel, contentPane;
JScrollPane gameScrollPane;
BoardPanel boardPanel;
public GameFrame(){
super();
SwingUtilities.invokeLater(new Runnable(){
public void run(){
boardPanel = new BoardPanel();
playerDeckPanel = new JPanel();
boardPanel.setLayout(new GridLayout(1,1));
playerDeckPanel.setLayout(new CardLayout());
boardPanel.setSize(1000,1000);
gameScrollPane = new JScrollPane(boardPanel);
gameScrollPane.setPreferredSize(new Dimension(300,300));
contentPane = ((JPanel) getContentPane());
contentPane.setLayout(new GridLayout(1,2));
contentPane.add(gameScrollPane);
contentPane.add(playerDeckPanel);
setMinimumSize(new Dimension(800,600));
}
});
}
public static void main(String[] args){
GameFrame gameFrame = new GameFrame();
gameFrame.setVisible(true);
}
private class BoardPanel extends JPanel{
public BoardPanel(){
super();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(100, 10, 700, 600);
revalidate();
}
}
}
这是我第一次发布问题,因此,如果您需要其他信息来解决此问题,请告诉我
您需要在BoardPanel上设置
setPreferredSize
,这似乎可以解决问题。 不要问为什么;-)-@ geert3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.