标签: repaint

重新循环

我正在使用Java Swing编写游戏.我希望每次循环执行时都会绘制一个小延迟,以在屏幕上创建级联效果.我相信系统中的效率例程会将调用折叠repaint()成单个调用.无论如何,在总延迟之后,所有变化都会立即发生.有没有办法强制系统立即重绘,然后延迟循环的每次迭代?

我的代码:

for(int i=0;i<10;i++){
    JButton[i].setBackground(Color.WHITE);
    JButton[i].repaint();
    Thread.sleep(2000);
    JButton[i].setBackground(Color.GRAY);
    JButton[i].repaint();
}
Run Code Online (Sandbox Code Playgroud)

java swing repaint

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

如何在java中的运行时将jpanel表单添加到jpanel?

NewProductPanel pPanel=new NewProductJPanel();
pPanel.setVisible(true);
mainPanel.setLayout(new java.awt.BorderLayout());
mainPanel.add(pPanel);
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个jPanel表单,我想将它动态添加到我的程序的mainJFrame中,我使用NetBeans..plz帮我解决这个问题.

java validation swing jpanel repaint

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

等到重新绘制组件完成

我有一个带有JPanel的ScrollPane,我在其中添加了大约200个组件JPanel.知道我希望Vertical-Slider移动到特定的Component.但问题是,当我打电话时:

myButton.scrollRectToVisible(myButton.getBounds());
Run Code Online (Sandbox Code Playgroud)

getBounds() 给我宽度和高度0.

显然,元素仍然没有被绘制.我怎么能等到repaint()方法完成它的所有工作,这样我才能做到scrollRectToVisible()

编辑:

如果我给出了我的代码的简短示例,它可能会有所帮助:

 addElementsToPanel(); //function where I add Elements to the Panel

 myJPanel.revalidate();
 myJPanel.repaint();

 myButton.scrollRectToVisible(myButton.getBounds());
Run Code Online (Sandbox Code Playgroud)

java swing repaint

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

按钮点击后重新绘制JPanel

我是Java Swing的新手,我有一个奇怪的问题要刷新我的JPanel.

JPanel在我的框架中创建一个静态组件,我从一个静态方法调用FileListenner我来重新绘制JPanel

 public static void repaintPlan(JPanel f) {
    f.paint(f.getGraphics()); 
    f.revalidate(); // or validate
}
Run Code Online (Sandbox Code Playgroud)

我的意思是,当我检测到文件内容的变化时,我计算新的坐标并重新绘制JPanel(我从JPanel to definepaintComponent()`方法创建一个类exends )

当我运行应用程序时,一切正常,并且当文件中的更改数据时重绘工作; 但如果我用鼠标单击Jpanel,该repaint()方法将不再起作用.你能告诉我为什么点击之后JPanel,重新粉刷不起作用?

抱歉我的英文不好谢谢你提前:)

编辑:谢谢你的回复!但即使我使用repaint()方法,也是同样的问题.我正试图了解点击后会发生什么JPanel.我应该在Swing中使用鼠标事件来解决问题吗?

java swing jpanel repaint

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

保持绘制图形 - 删除super.paintComponent

我有一个名为Foo的类,它扩展了一个名为Bar的类,它扩展了JPanel并实现了ActionListener.当我选择圆形并单击绘制按钮时,我绘制一个圆形,当我按下矩形并单击绘制时,它会删除前一个形状并绘制一个矩形.

但是,我想在JPanel上保留所有形状,直到我选择单击"删除"按钮.所以我删除了super.paintComponent(g)它并且它可以工作,但它也导致类Bar的按钮以一种小故障的方式重新出现.如何再次停止绘画按钮?我想不要扩展Bar并让Foo扩展JPanel.

  public class Bar extends JPanel implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {

        if (e.getActionCommand() == "Draw")
        {
            this.requestDraw = true;
            repaint();
        }
            if (e.getActionCommand() == "Circle")
            {
                requestRectangle = false;
                requestTriangle = false;
                requestCircle = true;
            }
            if (e.getActionCommand() == "Rectangle")
            {
                requestCircle = false;
                requestTriangle = false;
                requestRectangle = true;
            }
            if (e.getActionCommand() == "Right Triangle")
            {
                requestCircle = false;
                requestRectangle = false;
                requestTriangle = true;
            }
    }


    public class Foo extends Bar
    { …
Run Code Online (Sandbox Code Playgroud)

java graphics swing repaint paintcomponent

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

如何使用 Swing JPanel 在 Java 中强制重绘?

为什么我的图像不会为简单的动画重新绘制?我从两种不同的方法调用 repaint() ,一种会导致重绘,但另一种不会。强制重绘的方法是从事件侦听器生成的。一个不是定时动画线程。我知道动画线程运行正常,只要我不断滑动滑块,它就会完美显示。请帮忙!
PS 是的,我在这里看到了很多类似的问题,我尝试过验证、重新验证和使用油漆与油漆组件。组成代码的四个类如下:

import javax.swing.*;

public class gutz{

    public static int windowWidth = 640;
    public static int windowHeight = 480;

    public static void main(String[] args){

        hBod hb1 = new hBod(50, 30, 21, 111, 7, -11);   //mass, radius, xpos, ypos, xvel, yvel
        Thread t1 = new Thread(hb1);

        windowmakr w = new windowmakr();
        w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        w.setSize(windowWidth, windowHeight);
        w.setVisible(true);

        t1.start();
    }
}

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

public class windowmakr extends JFrame {

    private JSlider slider;
    private drawr panel;

    public windowmakr(){ …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel repaint

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

Java等待repaint()方法完成 - 不知道如何实现

我搜索了很多问题,但我从未找到我可以真正实现或理解的答案! 我不希望代码在屏幕重新绘制后继续运行! 我有一个简单的功能: wait until repaint has finished

public static void clearScreen()
{
    panel.repaint();    
}
Run Code Online (Sandbox Code Playgroud)

我现在可以告诉你,这有效!
唯一的问题是它不等待重新绘制,例如:

public static void blah()
{
    drawSomething();
    clearScreen();
    drawSomething();
}
Run Code Online (Sandbox Code Playgroud)

这两幅图很有可能从屏幕上清晰可见。正如您可能猜到的那样,我不想要这个!
我只想提一下,所有单独的功能都可以工作

java swing repaint

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

重绘时是否会再次执行随机函数?

我正在编写一个代码,我在JPanel上绘制多个形状然后调用repaint.我认为当我调用重绘时,JPanel中的形状应该移动到一个新位置,因为随机函数现在将提供不同的值.但形状根本不动.任何想法为什么会发生这种情况?

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

@SuppressWarnings("serial")
public class Filter extends JFrame
{
    public static void main(String[] args)
      {
            SwingUtilities.invokeLater(new Runnable()
            {  
                public void run() 
                {
                    Filter mainFrame = new Filter();
                    mainFrame.setVisible(true);
                }
            });
      }

    public Filter()
    {
        //Creating the JFrame main window
        setSize(800, 500);
        setTitle("Particle Filter");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLocation(100, 100);
        getContentPane().setLayout(new BoxLayout(this.getContentPane(), BoxLayout.X_AXIS));

        //creates two …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel repaint

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

在 Qt 中使用像素图或位图快速绘图

我需要在 Qt 中快速绘制小部件,但我不想使用任何准备好的东西。我有一些浮动数据,例如QVector< float >数据,我需要在小部件上绘制它。但我不希望使用paintEventQPainter直接就可以了。有没有机会将此数据转换为位图(像素图?)并直接加载它以显示在小部件上?如何从浮点数创建位图?

plot qt bitmap repaint pixmap

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

Java Canvas repaint() 闪烁

所以我终于让 Canvas 以我想要的方式工作,但它不断闪烁,repaint() 每秒运行 20 次,当我让它每秒运行 10 次时,闪烁确实减少了。

package pd.data;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;

import pd.areas.MainMenu;

@SuppressWarnings("serial")
public class Main extends JFrame implements Runnable {

    private JPanel contentPane = new JPanel();

    private Thread gameThread = new Thread(this);
    public boolean running = false;



    @SuppressWarnings("unused")
    private int current = PDU.PD_MAIN_MENU;
    private MainMenu mainmenu;

    public Main() {main.setTitle("PD");
        main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        main.setLocation(SPU.screenWidth / 2 - SPU.windowSize.width / 2,
                SPU.screenHeight / 2 - SPU.windowSize.height / 2);
        main.setResizable(false);
        main.setVisible(true);
        contentPane.setLayout(new BorderLayout(0, 0));
        contentPane.setPreferredSize(SPU.windowSize);
        main.setContentPane(contentPane);
        main.pack();
        mainmenu …
Run Code Online (Sandbox Code Playgroud)

java canvas flicker repaint

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

标签 统计

repaint ×10

java ×9

swing ×8

jpanel ×4

bitmap ×1

canvas ×1

flicker ×1

graphics ×1

paintcomponent ×1

pixmap ×1

plot ×1

qt ×1

validation ×1