我需要在jlayeredpane上动态移动一些jlabel。问题是它们不能正常刷新。有时它们移动正确,有时根本不出现。
我的代码如下所示:
构建面板
JLayeredPane gameBoardPane = new JLayeredPane();
gameBoardPane.setLayout( null );
Dimension gameBoardLabelSize = gameBoardLabel.getPreferredSize();
gameBoardLabel.setBounds(30, 30, gameBoardLabelSize.width, gameBoardLabelSize.height);
gameBoardPane.add(gameBoardLabel, new Integer(10));
gameBoardPane.setAlignmentY(Component.TOP_ALIGNMENT);
// ...
JPanel gamePane = new JPanel();
gamePane.setLayout( new BoxLayout(gamePane, BoxLayout.LINE_AXIS) );
gamePane.add(gameBoardPane);
gamePane.add(gameControlPane);
// ...
Container contentPane = getContentPane();
contentPane.add(gamePane, BorderLayout.PAGE_START);
SnLFrame.setSize( 720,600 );
添加jlabel:
Coordinates position = new Coordinates();
position = convertToCoordinates(blockNumber);
position.x = position.x * 50;
position.y = position.y * 50;
Dimension smallPlayer1IconLabelSize = smallPlayer1IconLabel.getPreferredSize();
smallPlayer1IconLabel.setBounds(position.x, position.y, smallPlayer1IconLabelSize.width, smallPlayer1IconLabelSize.height);
gameBoardPane.add(smallPlayer1IconLabel, new Integer(100));
SnLFrame.invalidate();
SnLFrame.validate();
SnLFrame.repaint();
当它显示jlabel时,定位是正确的,但它并不总是显示它。。。这里出了什么问题。。。
2条答案
按热度按时间svmlkihl1#
我已经浏览了气垫船之前的答案,我很肯定它会满足你的需要,但我忍不住要玩。
这只是一个例子。动画引擎是垃圾(在互联网上有更好的框架可用),但它有点有趣;)
wz3gfoph2#
问题其实出在我的定位算法上。