目前我有一个漂亮的JViewport,其中设置了Jlabel并用作视图。我想知道是否可以使用分层Jlabels作为Viewport的视图。 IE:我想将新的JLabel添加到预先存在的视口中。
谢谢!
编辑:关于StanislavL的建议,我现在在JScrollPane中使用JLayeredPane。目前JLayeredPane中有两个JLabel,当我滚动JScrollPane时,较大的背景图像正确滚动,较小的shipSprite保持在相同的位置。有什么想法我可以让他们一起滚动吗?
public void initViewport() {
explorePort = new JScrollPane();
explorePort.setBounds(0, 0, retailWidth, retailHeight);
explorePort.setBackground(new Color(0, 100, 0));
explorePort.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
explorePort.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
ImageIcon background = Main.global.imgScaler.scaleImage(new ImageIcon("images/blankgrid.jpg"), retailWidth*2, retailHeight*2);
JLabel backSplash = new JLabel(background);
backSplash.setBounds(0, 0, retailWidth*2, retailHeight*2);
ImageIcon shipIcon = Main.global.imgScaler.scaleImage(new ImageIcon("images/ship.png"), Main.global.nodeWidth, Main.global.nodeHeight);
JLabel shipSprite = new JLabel(shipIcon);
shipSprite.setBounds(100, 100, Main.global.nodeWidth, Main.global.nodeHeight);
Main.global.gamePanel.add(backSplash, 0);
explorePort.setViewportView(backSplash);
Main.global.gamePanel.add(shipSprite, 1);
Main.global.gamePanel.add(explorePort, 2);
//explorePort.addMouseListener(this);
Main.global.gameFrame.addKeyListener(new ListenKey());
}
答案 0 :(得分:3)
使用“分层”窗格向容器添加多个标签,并将容器放在JScrollPane中 http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html