想写个程序让6个图片在窗口中移动 ok 直接提问了我需要做一段程序 要求有6个小图片同时在窗口中移动 哪位高手能帮忙写一段代码提示一下 感激不尽俺的东东超过一个图片的话 就会开始闪 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【xsir317】截止到2008-07-29 15:32:05的历史汇总数据(不包括此帖):发帖的总数量:13 发帖的总分数:330 每贴平均分数:25 回帖的总数量:104 得分贴总数量:35 回帖的得分率:33% 结贴的总数量:13 结贴的总分数:330 无满意结贴数:1 无满意结贴分:20 未结的帖子数:0 未结的总分数:0 结贴的百分比:100.00% 结分的百分比:100.00% 无满意结贴率:7.69 % 无满意结分率:6.06 % 敬礼! <MARQUEE style="WIDTH: 712px; HEIGHT: 30px" scrollAmount=3 scrollDelay=80 behavior=alternate><img src="blue.gif">image</img></MARQUEE>这样可以吗? 不好意思没说清楚,是EXE,不是Web! 梦翔网 dreamfly.net.cn 南京本土专业计算机图书销售网站 可不可以在窗口中添加6个图片框,然后用timer控件控制图片出现的图片框位置,以此模仿图片移动 使用6个JLabel用来显示图片,创建一个Timer在其时间中移动这6个JLabel,选择合理的Timer频率和移动速度应该不会闪的。或者在Timer里每次只移动一个JLabel,依次轮循 如果是c/s可以通过继承JPanel后覆盖其public void paintComponent(Graphics g)方法,通过调用drawImage为六个图片制定不同位置坐标来绘制六个图片,移动时可以按照你的需求改变各图片坐标后repaint()即可drawImage的具体用法(还有其它五个不同参数的方法,可参照java API)public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer)绘制指定图像中当前可用的图像。图像的左上角位于该图形上下文坐标空间的 (x, y)。图像中的透明像素不影响该处已存在的像素。 此方法在任何情况下都立刻返回,甚至在整个图像尚未装入,并且它还没有为当前输出设备完成抖动和转换的情况下也是如此。 如果图像已经完全装入,并且其像素不再发生改变,则 drawImage 返回 true。否则 drawImage 返回 false,并且随着更多的图像可用或者到了绘制动画另一帧的时候,装入图像的进程就会通知指定的图像观察者。 参数:img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。x - x 坐标。y - y 坐标。observer - 当转换了更多图像时要通知的对象。 import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.HeadlessException; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JViewport; import javax.swing.Timer; import javax.swing.*;import java.awt.BorderLayout;import javax.swing.JPanel;public class Test84 extends JFrame{ private Timer timer; // private JLabel view; private JPanel view; private JViewport window; public static void main(String[] args) { JFrame frm = new Test84("TEXT"); frm.setDefaultCloseOperation(EXIT_ON_CLOSE); frm.pack(); frm.setLocationRelativeTo(null); frm.setVisible(true); } public Test84(String title) throws HeadlessException { super(title); initComponents(); addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { anchor = new Point(); anchor.x = -window.getExtentSize().width; timer.start(); } } ); timer = new Timer(100, new ActionListener() { public void actionPerformed(ActionEvent e) { animate(); } } ); timer.setInitialDelay(0); } private void initComponents() { // JLabel label[]=new JLabel label[6];//ImageIcon img2[]=new ImageIcon[3];// ImageIcon icon2 = new ImageIcon("./img/456.jpg");//img1[1]=icon2;// try// {// System.arraycopy(img2,0,img1,2,img2.length); // } //catch(ArrayIndexOutOfBoundsException e){} // ImageIcon icon1 = new ImageIcon("./img/456.jpg");//JLabel label = new JLabel("str", img1[0], JLabel.CENTER); //JLabel label2 = new JLabel(img1[1]); // label.setIcon(img1[0]); //label.setIcon(img2[1]);//for(int i=1; i<=6; i++) //JLabel label = new JLabel(new ImageIcon("./img/"+ i+".jpg")); // { JLabel label = new JLabel(new ImageIcon("./img/"+ i+".jpg")); // JPanel p = new JPanel(); // p.add(label, String.valueOf(i)); // getContentPane().add(p, BorderLayout.CENTER);// } //ImageIcon img1[]=new ImageIcon[2]; ImageIcon icon1 = new ImageIcon("./img/1.jpg"); ImageIcon icon2 = new ImageIcon("./img/2.jpg"); ImageIcon icon3 = new ImageIcon("./img/3.jpg"); ImageIcon icon4 = new ImageIcon("./img/4.jpg"); ImageIcon icon5 = new ImageIcon("./img/5.jpg"); ImageIcon icon6 = new ImageIcon("./img/6.jpg"); // img1[0]=icon1; //img1[1]=icon2;JLabel label1 = new JLabel(icon1);JLabel label2= new JLabel(icon2);JLabel label3= new JLabel(icon3);JLabel label4= new JLabel(icon4);JLabel label5= new JLabel(icon5);JLabel label6= new JLabel(icon6); // JLabel label= new JLabel();// label.add(label1);// label.add(label2); JPanel p1= new JPanel(); p1.add(label1); p1.add(label2); p1.add(label3); p1.add(label4); p1.add(label5); p1.add(label6); JPanel p= new JPanel(); p.add(p1); view=p; window = new JViewport(); window.setView(view); getContentPane().add(window); } Point anchor; private void animate() { Dimension extSize = window.getExtentSize(); Dimension viewSize = view.getPreferredSize(); anchor.x += 5; window.setViewPosition(anchor); if (anchor.x > viewSize.width) anchor.x = -extSize.width; } }使用此方法虽说麻烦点不过功能已经实现 字符串转化问题 貌似简单的正则表达式,高手请进 jar可以转换成exe吗?? 关于Jcerator JAVE技术群欢迎各位老鸟小鸟加入! java io 的问题 ,大家帮帮初学者 关于数据类型对照的问题 给出ip,想得到hostname,该怎么做? 如何禁止我的jframe被关闭? java sftp通道建立连接时报错,在channel.connect()时报("session is down"); SPLIT的简单问题?TKS 类型转换问题
楼主【xsir317】截止到2008-07-29 15:32:05的历史汇总数据(不包括此帖):
发帖的总数量:13 发帖的总分数:330 每贴平均分数:25
回帖的总数量:104 得分贴总数量:35 回帖的得分率:33%
结贴的总数量:13 结贴的总分数:330
无满意结贴数:1 无满意结贴分:20
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:7.69 % 无满意结分率:6.06 %
敬礼!
这样可以吗?
应该不会闪的。或者在Timer里每次只移动一个JLabel,依次轮循
drawImage的具体用法(还有其它五个不同参数的方法,可参照java API)
public abstract boolean drawImage(Image img,
int x,
int y,
ImageObserver observer)绘制指定图像中当前可用的图像。图像的左上角位于该图形上下文坐标空间的 (x, y)。图像中的透明像素不影响该处已存在的像素。
此方法在任何情况下都立刻返回,甚至在整个图像尚未装入,并且它还没有为当前输出设备完成抖动和转换的情况下也是如此。 如果图像已经完全装入,并且其像素不再发生改变,则 drawImage 返回 true。否则 drawImage 返回 false,并且随着更多的图像可用或者到了绘制动画另一帧的时候,装入图像的进程就会通知指定的图像观察者。
参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
x - x 坐标。
y - y 坐标。
observer - 当转换了更多图像时要通知的对象。
import java.awt.Dimension;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JViewport;
import javax.swing.Timer;
import javax.swing.*;
import java.awt.BorderLayout;
import javax.swing.JPanel;public class Test84 extends JFrame
{
private Timer timer;
// private JLabel view;
private JPanel view;
private JViewport window;
public static void main(String[] args)
{
JFrame frm = new Test84("TEXT");
frm.setDefaultCloseOperation(EXIT_ON_CLOSE);
frm.pack();
frm.setLocationRelativeTo(null);
frm.setVisible(true);
} public Test84(String title) throws HeadlessException
{
super(title); initComponents(); addComponentListener(new ComponentAdapter()
{
public void componentResized(ComponentEvent e)
{
anchor = new Point();
anchor.x = -window.getExtentSize().width;
timer.start();
}
}
);
timer = new Timer(100, new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
animate();
}
}
);
timer.setInitialDelay(0);
} private void initComponents()
{
// JLabel label[]=new JLabel label[6];
//ImageIcon img2[]=new ImageIcon[3];// ImageIcon icon2 = new ImageIcon("./img/456.jpg");
//img1[1]=icon2;
// try
// {
// System.arraycopy(img2,0,img1,2,img2.length);
// }
//catch(ArrayIndexOutOfBoundsException e){}
// ImageIcon icon1 = new ImageIcon("./img/456.jpg");
//JLabel label = new JLabel("str", img1[0], JLabel.CENTER);
//JLabel label2 = new JLabel(img1[1]); // label.setIcon(img1[0]);
//label.setIcon(img2[1]);
//for(int i=1; i<=6; i++)
//JLabel label = new JLabel(new ImageIcon("./img/"+ i+".jpg"));
// { JLabel label = new JLabel(new ImageIcon("./img/"+ i+".jpg"));
// JPanel p = new JPanel();
// p.add(label, String.valueOf(i));
// getContentPane().add(p, BorderLayout.CENTER);
// }
//ImageIcon img1[]=new ImageIcon[2];
ImageIcon icon1 = new ImageIcon("./img/1.jpg");
ImageIcon icon2 = new ImageIcon("./img/2.jpg");
ImageIcon icon3 = new ImageIcon("./img/3.jpg");
ImageIcon icon4 = new ImageIcon("./img/4.jpg");
ImageIcon icon5 = new ImageIcon("./img/5.jpg");
ImageIcon icon6 = new ImageIcon("./img/6.jpg");
// img1[0]=icon1;
//img1[1]=icon2;JLabel label1 = new JLabel(icon1);
JLabel label2= new JLabel(icon2);
JLabel label3= new JLabel(icon3);
JLabel label4= new JLabel(icon4);
JLabel label5= new JLabel(icon5);
JLabel label6= new JLabel(icon6);
// JLabel label= new JLabel();
// label.add(label1);
// label.add(label2);
JPanel p1= new JPanel();
p1.add(label1);
p1.add(label2);
p1.add(label3);
p1.add(label4);
p1.add(label5);
p1.add(label6);
JPanel p= new JPanel();
p.add(p1);
view=p;
window = new JViewport();
window.setView(view);
getContentPane().add(window);
} Point anchor;
private void animate()
{
Dimension extSize = window.getExtentSize();
Dimension viewSize = view.getPreferredSize();
anchor.x += 5;
window.setViewPosition(anchor);
if (anchor.x > viewSize.width)
anchor.x = -extSize.width;
}
}
使用此方法虽说麻烦点不过功能已经实现