javaswing中的绝对定位图像图标
因此,我试图为我的项目编写一个使用JavaSwing的3个不同的口袋妖怪之间的战斗。然而,阻碍我的部分是动画。我尝试使用带有setLocation的空布局,以便根据计时器移动图像图标,但问题是,正如您可能知道的,图像图标不会显示在空布局中。是否有任何方法可以改变它,使其以这种方式工作。 我就是这样宣布我的照片的javaswing中的绝对定位图像图标,java,swing,css-position,imageicon,Java,Swing,Css Position,Imageicon,因此,我试图为我的项目编写一个使用JavaSwing的3个不同的口袋妖怪之间的战斗。然而,阻碍我的部分是动画。我尝试使用带有setLocation的空布局,以便根据计时器移动图像图标,但问题是,正如您可能知道的,图像图标不会显示在空布局中。是否有任何方法可以改变它,使其以这种方式工作。 我就是这样宣布我的照片的 java.net.URL torterraPic = getClass().getResource("torterra-1.gif"); ImageIcon torterra = ne
java.net.URL torterraPic = getClass().getResource("torterra-1.gif");
ImageIcon torterra = new ImageIcon(new ImageIcon(torterraPic).getImage().getScaledInstance(100, 100, Image.SCALE_DEFAULT));
然后,我将图像图标放在一个JLabel中,并将其添加到帧中,然后设置位置以选择其位置
我理解不鼓励使用绝对定位,但我觉得这是最好的方法(假设可以添加图片),因为这样我可以操纵设置位置,使其在攻击期间向上移动。我尝试过使用gridbag和GridLayout来做这件事,但两者都不方便我
所以,如果有什么方法可以锻炼,请告诉我。
提前谢谢
我尝试使用带有setLocation的空布局,以便根据计时器移动图像图标,但问题是,正如您可能知道的,图像图标不会显示在空布局中
是的,他们会,但您现在负责执行布局管理器功能,这意味着您需要设置标签的位置和大小
通常,您会执行以下操作:
label.setIcon(...);
label.setSize( label.getPreferredSize() ):
label.setLocation(...);
然后在动画中,您只需根据需要更改位置。无需使用空布局和组件绝对定位,因为您的图像精灵不应该是JLabel或其他组件,而是创建BuffereImage精灵,然后根据绘画教程在单图形JPanel的paintComponent方法中绘制它们-- 首先在静态位置绘制背景图像,然后通过
g.drawImage(…)
override的x和y参数移动精灵的位置。通过使用ActionListener的Swing计时器或通过其他侦听器(如键绑定)驱动动画。“但是,使我停滞的部分是动画。”DYM图像是动画(多帧)GIF,或者代码正在移动图像(或两者,或其他)?