标签: repaint

在Java,AWT中,似乎忽略了repaint-method而支持start-method

我正在构建一个棋盘游戏的applet,处理用户输入大致如下所示:

public void mousePressed(MouseEvent event) {
    int row = event.getX() / (getSize().width / 8) ;
    int column = event.getY() / (getSize().height / 8) ;
    if(possibleMove(column, row) {
        makeMove(column,row,whosTurn); 
        repaint();
        start();
    }
}
Run Code Online (Sandbox Code Playgroud)

人工输入后,计算机选择一个移动并调用repaint()和start(),就像这个方法一样.
但是屏幕似乎只有在计算机移动后才会更新,所以在调用start()之后.怎么会发生这种情况,因为在start()之前调用了repaint()?

我怀疑这可能是因为repaint()启动一个新线程(是吗?),但为什么它会等待start()?

当然,如果有必要,我可以提供更多代码.

java applet awt repaint

1
推荐指数
1
解决办法
1527
查看次数

Java我只想在变量更改时重绘

我有一种方法可以写出剩下多少猜测,并且我希望每次人们错过字母或单词时都要重新绘制,但是它会一直重新绘制,这会导致整个程序不断闪烁.

我的方法看起来像这样:

public void repaintWord(Graphics g){
    g.SetColor(Color.RED);
    g.drawString("You have " + getN() + " guesses left", 400, 50);
    repaint();
}
Run Code Online (Sandbox Code Playgroud)

当getN()改变它的值时,如何只重画一次?

java swing repaint paintcomponent

1
推荐指数
1
解决办法
438
查看次数

重绘 - 立即绘画和删除

我有一个乒乓球项目(种类),它的工作原理,但run()函数有问题.如果我用我写入面板的功能绘制框架(它们工作,我检查)它给出了图形的问题,如果我使用重绘(如我所说)它绘制框架并立即删除它,每个解决方案将有所帮助(更好的是我的代码级别中的一个简单的):

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;
import java.util.Random;
import javax.swing.*;
import sun.org.mozilla.javascript.internal.Kit;



public class Picture extends JPanel implements MouseListener, Runnable{

    private int k = 0;
    Thread MyThread;
    private DrawPic img;

    private Rectangle r1, r3;

    public Picture(DrawPic img, Rectangle rect1, Rectangle rect3) {
        super();
        this.setLocation(0, 85);
        this.setLayout(new FlowLayout());
        this.setSize(1280, 1024);

        this.addMouseListener(this);
        this.setFocusable(true);

        this.r1 = rect1;

        this.r3 = rect3;
        this.img = img;
        this.MyThread = new Thread(this);
        MyThread.start();
        this.setVisible(true);

    }




    public void paintRectangleL(Rectangle rect, Graphics g) …
Run Code Online (Sandbox Code Playgroud)

java swing repaint runnable

1
推荐指数
1
解决办法
193
查看次数

java图形重绘方法实际上是如何工作的

我刚刚开始使用java 2d图形应用程序,在我的研究重绘是重绘我们的图形浪费了大量资源.但是我想知道什么重绘是什么,有效以及如何有效地使用它,为我画布上的许多可移动动态对象安全快速地线程?

java swing java-2d repaint graphics2d

1
推荐指数
1
解决办法
2145
查看次数

Java-repaint()替代方案

这是我的简单代码,它在椭圆形光标附近绘制.每次点击框架都会重新绘制,当时只能绘制一个椭圆形.我想知道如何使每个椭圆形图形点击以留在框架上.谢谢你每个建议.

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Buffer extends JPanel implements MouseListener{
public static JFrame frame;
public static boolean check;

public void paintComponent(Graphics g){
    super.paintComponent(g);
    if(check==true){
        g.drawOval((int)MouseInfo.getPointerInfo().getLocation().getX(), (int)MouseInfo.getPointerInfo().getLocation().getY(), 10, 10);
    }
}

public static void main(String args[]){
    Buffer x=new Buffer();
    x.setBackground(Color.cyan);

    frame=new JFrame();
    frame.setSize(500,500);
    frame.addMouseListener(x);
    frame.add(x);
    frame.setVisible(true);
    }

public void mouseClicked(MouseEvent e){
    check=true;
    repaint();
    }

public void mouseEntered(MouseEvent arg0){}
public void mouseExited(MouseEvent arg0){}
public void mousePressed(MouseEvent arg0){}
public void mouseReleased(MouseEvent arg0){}
 }
Run Code Online (Sandbox Code Playgroud)

java swing repaint paintcomponent

1
推荐指数
1
解决办法
713
查看次数

调用重绘时简单的缓冲图像闪烁

我正在尝试使用 openCV 创建网络摄像头视图,但是当我重新绘制保存的图像时,它会闪烁,并且图像有时看起来是半灰色的。

import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;

    public class Panel extends JPanel {

    BufferedImage img;
    public Panel() {
        super(true);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);


        try {
            img = ImageIO.read(new File("webcam.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        g.drawImage(img, 0, 0, 640, 480, this);
        repaint();
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing flicker repaint

1
推荐指数
1
解决办法
381
查看次数

当另一个表格关闭时,如何刷新一个表格?

我一直在用c#开发项目.

它有2种形式,它们之间相互连接.

当第二个表单关闭,第一个表单刷新时,我想这样做.

如果我使用Thread的Sleep程序会很累.我希望通过结束活动来做到这一点.我该怎么办?(就像java的重绘一样)

代码如下: Form1

public static Form1 form;
    public Form1()
    {
        InitializeComponent();
        form = this;
    }

    private void button11_Click(object sender, EventArgs e)
    {
        Form2 yeniform = new Form2();
        yeniform.Show();

    }
Run Code Online (Sandbox Code Playgroud)

Form2(关闭按钮)

 private void button1_Click(object sender, EventArgs e)
    {

            Form1.form.Invalidate();
            Form1.form.Refresh();
            this.Close();
    }
Run Code Online (Sandbox Code Playgroud)

c# refresh repaint invalidation winforms

1
推荐指数
1
解决办法
1万
查看次数

Element.setAttribute 是否会触发回流?

我开始学习浏览器的内部工作原理,并遇到了回流/重绘机制(以及它如何应用于 React,但我不想离题)。

一般来说,我认为任何使浏览器计算值/可见更改的行为都会触发回流/重绘。

然而,我却无法理解Element.setAttribute。它会触发 Chrome 中的回流/重绘吗?更新dom树中多个元素属性最有效的方法是什么?

javascript browser dom repaint reflow

1
推荐指数
1
解决办法
1439
查看次数

显示分辨率更改后表单重绘问题

我有一个 Delphi GUI 应用程序,它运行得很好,直到显示分辨率更改自动导致程序的 GUI 窗口被重新绘制。我们可以通过消息捕获这个显示事件WM_DISPLAYCHANGE

在重绘事件中,似乎某些TListView在那一刻隐藏的组件不会被重绘,直到它们再次可见。

似乎仅在表单的可见组件上调用重绘,并且操作系统在不可见的项目再次变得可见时重新绘制它们。

但是,当代码引用消息TListViewWM_DISPLAYCHANGE尚未显示的 a 中的项目时,这会导致问题。内部应该TListView有项目,但TListView.Items.Count返回 0,就好像TListView是空的一样。

在屏幕上显示可见后TListView,一切都会恢复正常,并且我可以再次引用TListView.

我尝试显式调用TListView.Repaint()更新它而不必显示它,但它不起作用。

这是有记录的行为吗?

有没有办法立即重新绘制不可见的表单组件,而不让它在屏幕上可见?

delphi listview vcl repaint

1
推荐指数
1
解决办法
125
查看次数

Achartengine重新粉刷

我在webservice中有一个数据连接.在Assynctask中,我每5秒获取一次数据.数据到达后,我制作新的数据集,请原来我只是重绘mChartView生活.在这里提出我的问题.折线图重新绘制不重新生成图表只是在最后一个新的顶部.当然2-3分钟的menmory :(

这是我的代码:

class GetData extends AsyncTask<Void, String, Void> {

    private ArrayList<String> Alldata = new ArrayList<String>();
    public XYMultipleSeriesDataset datasetOut;
    public XYMultipleSeriesRenderer mRendererOut;

    @Override
    protected Void doInBackground(Void... unused) {

        Alldata.clear();
        Alldata = DataFromWeb.getChartDataNew("&name=XXX", "XXX");

        return (null);
    }

    @Override
    protected void onPostExecute(Void unused) {


        datasetOut = CCChart.getDataSet(getBaseContext(), Alldata);
        mRendererOut = CCChart.getRendererPortrait(getBaseContext());


        Log.d("Debug", "alldatasize: " + Alldata.size());
        Log.d("Debug", "dataset " + datasetOut.getSeriesCount() );

        if (mChartView != null) {
            mChartView.repaint();

            Log.v("CC_trace", "CCChartRepaint");

        } else {

            mChartView = ChartFactory.getLineChartView(getBaseContext(), datasetOut , mRendererOut);

                layout.addView(mChartView, new LayoutParams( …
Run Code Online (Sandbox Code Playgroud)

charts android repaint android-linearlayout achartengine

0
推荐指数
1
解决办法
3083
查看次数