首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想知道如何在eclipse中使用java项目的延迟来使用绘图组件。

我想知道如何在eclipse中使用java项目的延迟来使用绘图组件。
EN

Stack Overflow用户
提问于 2018-10-09 06:03:54
回答 1查看 25关注 0票数 1

我希望能够使用延迟的多个绘图组件。当我尝试使用延迟时,程序就会停止,只显示第一个绘图组件。没有延迟,只显示第二个绘图组件。我正在尝试制作一个模拟时钟,它每30秒改变一个小时,背景中的风景将会更新。第一个代码是主类,第二个是绘图组件1,最后一个是第二个绘图组件。我想要一些帮助。

代码语言:javascript
复制
//imports J Frame library
import javax.swing.JFrame;

public class MainClass 
{
    public static void main(String[] args) 
    {
        // Creates variable window
        JFrame window=new JFrame();
        //creates window 640 wide by 480 high
        window.setSize(640,480);
        //Sets a title for JFrame
        window.setTitle("This is a JFrame");
        //End program when window closed
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //Sets JFrame window to be seen
        window.setVisible(true);
        //Create an instance of DrawingComponent
        DrawingComponent DC=new DrawingComponent();
        //Add DC to window
        window.add(DC);
            try {
                Thread.sleep(4000);
            }
            catch(Exception e) {

            }
        //Create an instance of DrawingComponent
        DrawingComponent2 DC2=new DrawingComponent2();
        //Add DC to window
        window.add(DC2);


    }

}`

//an instance of JComponenet class drawing component 1
import javax.swing.JComponent;
import java.awt.BasicStroke;
//import color library
import java.awt.Color;
//import font library
import java.awt.Font;
//imports graphics class
import java.awt.Graphics;
//imports 2D graphics class
import java.awt.Graphics2D;
//imports Rectangle class
import java.awt.Rectangle;
//imports 2D ellipse library
import java.awt.geom.Ellipse2D;
//imports 2D line library
import java.awt.geom.Line2D;
//imports 2D Point library
import java.awt.geom.Point2D;
//Graphics2D g2 = (Graphics2D) g;
import java.util.concurrent.TimeUnit;


//Created a class DrawComponenet needed to add extends JComponenet
public class DrawingComponent extends JComponent
{

    //implemented a method from JCompnent class
    public void paintComponent(Graphics g) 
    {
         Graphics2D g2d = (Graphics2D) g;
         g2d.setStroke(new BasicStroke(10));
         g.setColor(Color.black);
         g2d.setStroke(new BasicStroke(20));
         g.drawOval(100,10,400,400);
         g.setColor(Color.white);
         g.fillOval(100,10,400,400);


    }

}


   /an instance of JComponenet class drawing component 2
import javax.swing.JComponent;
import java.awt.BasicStroke;
//import color library
import java.awt.Color;
//import font library
import java.awt.Font;
//imports graphics class
import java.awt.Graphics;
//imports 2D graphics class
import java.awt.Graphics2D;
//imports Rectangle class
import java.awt.Rectangle;
//imports 2D ellipse library
import java.awt.geom.Ellipse2D;
//imports 2D line library
import java.awt.geom.Line2D;
//imports 2D Point library
import java.awt.geom.Point2D;


//Created a class DrawComponenet needed to add extends JComponenet
public class DrawingComponent2 extends JComponent
{
    public void paintComponent(Graphics g)
    {
    Graphics2D g2d = (Graphics2D) g;
     g2d.setStroke(new BasicStroke(10));
     g.setColor(Color.orange);
     g2d.setStroke(new BasicStroke(20));
     g.drawOval(100,10,400,400);
     g.setColor(Color.blue);
     g.fillOval(100,10,400,800);
    }

}
EN

回答 1

Stack Overflow用户

发布于 2018-10-09 16:02:50

我想您不了解Java swing是如何工作的。有多个线程运行,以获取关键事件,重新绘制每个组件,...

正如我在您的问题中所理解的那样,在看完您的代码示例之后,我建议您在这里了解一下使用MVC模式的Java Swing是如何工作的,https://examples.javacodegeeks.com/core-java/java-swing-mvc-example/

在此之后,您应该在控制器中创建一个线程,以便在30秒后更改您的组件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52710703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档