Несколько просмотров в JViewport? - PullRequest
1 голос
/ 27 февраля 2012

В настоящее время у меня есть отличный JViewport с Jlabel, настроенным и используемым как представление. Мне интересно, возможно ли использовать многослойный Jlabels в качестве окна просмотра. IE: я хочу добавить новые JLabels в существующий видовой экран.

Спасибо!

РЕДАКТИРОВАТЬ: По совету StanislavL, я теперь использую JLayeredPane в JScrollPane. В настоящее время в JLayeredPane есть две JLabels, когда я прокручиваю 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());
}

1 Ответ

3 голосов
/ 27 февраля 2012

Используйте многослойную панель, чтобы добавить несколько меток в контейнер и поместить контейнер в JScrollPane. http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...