Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在java中重新绘制_Java_Swing_Jframe_Repaint - Fatal编程技术网

无法在java中重新绘制

无法在java中重新绘制,java,swing,jframe,repaint,Java,Swing,Jframe,Repaint,我无法在Jframe内动态地重新绘制() public static BufferedImage createBufferedImage(BufferedImage image) { ColorModel cm = image.getColorModel(); boolean premultiplied = cm.isAlphaPremultiplied(); WritableRaster raster = image.copyData(image.getRaster(

我无法在Jframe内动态地重新绘制()

public static BufferedImage createBufferedImage(BufferedImage image) 
{
    ColorModel cm = image.getColorModel();
    boolean premultiplied = cm.isAlphaPremultiplied();
    WritableRaster raster = image.copyData(image.getRaster());
    return new BufferedImage(cm, raster, premultiplied, null);
}


public static void main(String[] args) {


BufferedImage img = new BufferedImage(old_width_i, old_height_i, BufferedImage.TYPE_INT_RGB);

img=createBufferedImage(img_white_screen);



JFrame frame=new JFrame();
JLabel label = new JLabel(new ImageIcon(img));
frame.getContentPane().add(label, BorderLayout.WEST);
frame.pack();
frame.setVisible(true); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

img.flush();
img=createBufferedImage(img_black_screen);
//  frame.removeAll();
//  frame.revalidate();
//  label.removeAll();
//  label = new JLabel(new ImageIcon(img));
//  frame.getContentPane().add(label, BorderLayout.WEST);

frame.repaint();
}
它基本上创建了一个屏幕,其中第一个赋值为“img”(即img_white_screen),而不会更改为第二个赋值,即img_black_screen

  • 这,

  • 不知道为什么需要暂停代码执行一秒钟

  • 用于在Java中显示要使用的图像

  • 不要将
    XxxImage
    Icon/ImageIcon
    直接绘制到
    JFrame
    ,使用
    JPanel/JComponent
    JLabel

      • 这,

      • 不知道为什么需要暂停代码执行一秒钟

      • 用于在Java中显示要使用的图像

      • 不要将
        XxxImage
        Icon/ImageIcon
        直接绘制到
        JFrame
        ,使用
        JPanel/JComponent
        JLabel


      img=createBufferedImage(img黑屏)之后使用
      label.setIcon(img)
      。不需要重新粉刷JFrame。你想重新粉刷什么?睡在EDT上是不好的做法。这将导致不可预测的行为。在
      img=createBufferedImage(img黑屏)之后使用
      label.setIcon(img)
      。不需要重新粉刷JFrame。你想重新粉刷什么?睡在EDT上是不好的做法。这会导致不可预知的行为。我会尝试贴出的答案,但我之所以使用睡眠是为了让人产生旋转的感觉。。。比如说,图像是两个圆圈,有两条不同的参考线……我使用睡眠,这样用户就有了轮子旋转的错觉。。有没有更好的解决方案。。。注意:我正在手动撬动屏幕上的所有像素值screen@JS_VIPER一段时间内,我会尝试贴出的答案,但我之所以使用睡眠是为了让人有旋转的感觉。。。比如说,图像是两个圆圈,有两条不同的参考线……我使用睡眠,这样用户就有了轮子旋转的错觉。。有没有更好的解决方案。。。注意:我正在手动撬动屏幕上的所有像素值screen@JS_VIPER暂时