首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java Swing框架对象调用另一个对象,第一个对象冻结,而第二个对象执行,直到调用完成才显示任何内容

Java Swing框架是一种用于构建图形用户界面(GUI)的框架,它提供了一组丰富的组件和工具,用于创建交互式和可视化的应用程序。在Java Swing中,对象之间的调用是通过事件驱动的方式进行的。

当一个对象调用另一个对象时,如果第一个对象需要等待第二个对象执行完成才能显示任何内容,可以使用多线程来实现。具体而言,可以创建一个新的线程来执行第二个对象的调用,这样第一个对象就不会被冻结,而是可以继续执行其他操作或显示其他内容。

以下是一个示例代码,演示了如何在Java Swing中使用多线程来实现对象调用的冻结和执行:

代码语言:txt
复制
import javax.swing.*;

public class SwingObjectCall {
    public static void main(String[] args) {
        SwingObjectCaller caller = new SwingObjectCaller();
        caller.callObject();
    }
}

class SwingObjectCaller {
    public void callObject() {
        SwingWorker<Void, Void> worker = new SwingWorker<>() {
            @Override
            protected Void doInBackground() throws Exception {
                // 在后台线程中执行第二个对象的调用
                SecondObject secondObject = new SecondObject();
                secondObject.execute();
                return null;
            }

            @Override
            protected void done() {
                // 第二个对象调用完成后的处理
                // 在这里可以更新UI或执行其他操作
                System.out.println("Object call completed");
            }
        };

        // 执行SwingWorker
        worker.execute();

        // 第一个对象的其他操作或显示内容
        System.out.println("First object continues execution");
    }
}

class SecondObject {
    public void execute() {
        // 第二个对象的执行逻辑
        // 在这里可以执行耗时的操作或其他任务
        try {
            Thread.sleep(2000); // 模拟耗时操作
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Second object execution completed");
    }
}

在上述示例中,SwingObjectCaller类代表第一个对象,它创建了一个SwingWorker对象来执行第二个对象的调用。在SwingWorker的doInBackground方法中,创建并执行了SecondObject对象的调用。在SwingWorker的done方法中,可以进行第二个对象调用完成后的处理,例如更新UI或执行其他操作。

这里没有提及具体的腾讯云产品和链接地址,因为Java Swing框架对象调用另一个对象的场景与云计算领域关系不大,腾讯云的产品与此问题也没有直接相关性。如果您有其他与云计算相关的问题,我将很乐意为您提供相关的答案和推荐适合的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java Swing用户界面组件文本输入:文本域+密码域+格式化的输入域

JTextField textField = new JTextField(20); 可以在任何时候调用setText方法来改变文本域中的内容。...视图是显示字符串,模型是字符串对象。但是同样的体系结构也用于更高级的编辑组件。这些组件可以通过字体、段落以及其他更加复杂的数据结构标识的属性来提供格式化文本。...文本域根本不会调用第三个方法。对于复杂的文档类型来说,当一些内容发生变化时(例如改变格式),就会调用第三个方法。遗憾的是,没有任何回调方法会通告文本已改变—通常无需考虑它是如何改变的。...(密码并不是以字符串String型返回的,因为字符串一直保留在虚拟机上,直到垃圾回收。) 格式化的输入域 在上一个例子中,希望用户输入数字,不是任意的字符串。...参数:bypass 一个对象,允许你执行一个屏蔽过滤器的编辑命令 offset 被删除部分的偏移 length 被删除部分的长度 javax.swing.text.MaskFormatter 1.4 •

4.1K10

Java事件处理基础实例:处理按钮点击+捕获窗口事件+改变观感

一个是将面板存储在ColorAction对象中,并在ColorAction构造器中设置它;另一个是将ColorAction作为ButtonPanel类的内部类。...无论是命名方法,还是接口的所有方法都将执行目标对象上的给定动作。 动作可以是一个方法名或目标的属性。如果是属性,执行它的设置方法。例如,动作"text"将变为调用setText方法。...第一个属性从监听器方法的参数中读出。 第二个属性由结果对象读出等等。最后的结果将作为动作的参数。例如,属性"source.text"将变为调用getSource和getText方法。...当程序用户试图关闭一个框架窗口时,JFrame对象就是WindowEvent的事件源。在WindowListener接口中包含7个方法。当发生窗口事件时,框架调用这些方法来响应7个不同的事件。...只要框架产生了窗口事件,就会通过调用7个方法之中的一个方法将事件传递给listener对象(如图8-4所示),其中6个方法没有做任何事情;windowClosing方法调用System.exit(0)

3.6K30
  • Java 2 图形设计卷Ⅱ- SWING》第2章 Swing的基本知识

    轻量按钮的容器就是小应用程序的内容窗格。  注意 第一个添加到内容窗格的轻量按钮在其他轻量按钮之上显示。同样,第一个添加到内容窗格的重量按钮在其他重量按钮之上显示。  ...然后遭到把该面板添加到内容窗格中,使这个重量面板在第二个重量按钮之后 ,在第三个重量按钮之前。结果,轻量按钮具有与它们所在的面板相同的层序,它们在第二个重量按钮之下,第三个重量按钮之上显示。  ...虽然,invokeLater在把可运行对象放入队列后就返回,InvokeAndWait一直等待直到已启动了可运行对象的run方法才返回。...如果在另一个操作能够在另一个线程上执行之前必须从一个组件获取信息,则InvokeAndWait方法是很有用的。   例如,例2-14列出的小应用程序总是更新进度条的值不管该新值是否与当前的值相同。...对InvokeAndWait的调用直到getValue可运行对象的run方法返回后才返回。

    2.5K20

    java多线程总结

    得到这个线程对象 后双调用 了线程对象 的getname()方法取出当前线程的名称字符串 运行后我们会发现第一个代码块没有运行而且是只运行了第二个代码并且是无限循环。...不能抢夺另一个线程所占的资源,也就是被占用资源只能由占用线程自己来释放 4循环等待资源 存一组队线程,其实第个线程分别等待另一个进程所占用的资源 对多条操作共享数据语句,只能让一个线程都执行...当一个线程进入了synachronized修饰的方法, 其他线程就不能进入同一个对象 所使用了synachronized修饰方法,直到第一个线程执行它所进入 synchronized修饰的方法为止 代码块与函数间的同步...push方法中的data方法中的data[idx]=c语句,CPU便切换到另外一个线程上执行push方法,第二个线程将覆盖第一个线程执行的data[idx]=c语句的结果 还有共享访问数据,应当是类的private...锁可以是任意对象,锁可以被任意对象调用的方法定义在object类 也可以用前面 说到的 join 当a线程执行到了b线程的join方法时,那么a线程就会等待,等b线程都执行 a才会执行

    28330

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    当需要根据用户请求实现操作时,命令模式是处理对象的最佳模式。 命令设计模式的成员包括: Client、调用者、命令、具体执行内容、接收者9.XML和XAML有什么区别?...第一个命名空间是默认命名空间,有助于解析整体 WPF 元素。第二个命名空间以“x:”为前缀,有助于解析 XAML 语言定义。...25.什么是可冻结对象?Freezable 是一种特殊类型的对象,具有两种状态:unfrozen 和 frozen。 解冻时,Freezable 的行为与任何其他对象一样。...冻结后,无法再修改 Freezable。 Freezable 提供了一个 changed 事件来通知观察者对对象任何修改。...ContentPresenter 用于在控件模板中显示内容。ContentControl,可以直接使用(它应该用作基类), ContentPresenter 用来显示其控件模板中的内容部分。

    49522

    50道Java线程题

    一个很明显的原因是JAVA提供的锁是对象级的不是线程级的,每个对象都有锁,通 过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。...它是一个静态方法而且只保证当前线程放弃CPU占用不能保证使其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂停状态后马上又被执行。点击这里查看更多yield方法的相关内容。...这里的阻塞是 指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。更多详细信息请点击这里。 40) Swing是线程安全的吗? 为什么?...点击这里查看更多swing和线程安全的相关内容。 41) Java中invokeAndWait 和 invokeLater有什么区别?...这两个方法是Swing API 提供给Java开发者用来从当前线程不是事件派发线程更新GUI组件用的。

    1.6K110

    50道Java线程题

    一个很明显的原因是JAVA提供的锁是对象级的不是线程级的,每个对象都有锁,通 过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。...它是一个静态方法而且只保证当前线程放弃CPU占用不能保证使其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂停状态后马上又被执行。点击这里查看更多yield方法的相关内容。...这里的阻塞是 指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。更多详细信息请点击这里。 40) Swing是线程安全的吗? 为什么?...点击这里查看更多swing和线程安全的相关内容。 41) Java中invokeAndWait 和 invokeLater有什么区别?...这两个方法是Swing API 提供给Java开发者用来从当前线程不是事件派发线程更新GUI组件用的。

    1.2K70

    java swing开发窗体程序开发(一)GUI编程

    Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具 而是需要像QT一样纯代码式...java的好处就是通用性强,跨平台,这个java窗体程序做好之后,哪都可以用。然而C#的winform只能运行在有.net框架上 的平台,然而.net支持最好的,也就只有windows了。...C#的开发效率更高 以下讲解Java swing的开发 (一)第一个java swing程序 public static void main(String[] args) {...add到这个窗体中,才会显示 /** * 展示java swing中的常见组件 */ public class UserInputForm extends JFrame{...即通过选项卡可以切换不同的组件(也可以是子面板JPanel),相当于,第一个选项卡点击 显示第一个界面,第二个选项卡点击,不开新窗口,就在该窗口上显示第二个界面。

    2.8K30

    Java 中文官方教程 2022 版(十一)

    showDocument 的双参数形式允许您指定显示文档的窗口或 HTML 框架第二个参数可以有以下值之一: "_blank" – 在一个新的、无名称的窗口中显示文档。..."_parent" – 在小程序框架的父框架显示文档。如果小程序框架没有父框架,则与 "_self" 相同。 "_top" – 在顶层框架显示文档。...JavaScript 代码可以执行以下操作: 调用 Java 对象上的方法 获取并设置 Java 对象中的字段 获取和设置 Java 数组元素 LiveConnect 规范描述了 JavaScript...在下面的示例中,JavaScript 代码设置了 applet 的公共成员变量,调用了公共方法,并检索了由 applet 引用的另一个对象(Calculator)的引用。...这些对象构成了文档对象模型(DOM)。Java 小程序可以使用Common DOM API遍历和修改其父网页的对象。 考虑一个 Java 小程序的示例,它会转储其父网页的内容

    7800

    18.1 线程

    ,Thread对象只是一个实例,不是一个真正的线程。...join方法,join()方法使得当前进程暂停,直到调用join()方法的线程执行完毕后再执行,所以线程A等待线程B执行完毕后再开始执行。...,知道处于同步块中的线程执行同步块中的代码为止。...这个时候该对象的标志位会被设置为1,该线程才能执行同步块中的代码,i并将Object对象的标志位置为0,防止其他线程执行同步块中的内容。...2.同步方法 同步方法就是在方法前面修饰synchronized关键字的方法,其语法如下: synchronized void f() { ... }   当某个对象调用了同步方法的时候,该对象上的其他同步方法必须等待该同步方法执行完毕后才能被执行

    66650

    Java多线程面试题整理 1) 什么是线程?

    一个很明显的原因是JAVA提供的锁是对象级的不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。...如果获取对象锁失败,那当前线程就要阻塞,直到对象锁被另一个线程释放为止。...3.sleep()方法声明抛出了InterruptedException异常,所以调用sleep()方法时要么捕捉该异常,要么显示声明抛出该异常。 yield()方法则没有声明抛出任何异常。...这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。 34)Swing是线程安全的吗? 为什么?...invokeAndWait:后面的程序必须等这个线程(参数中的线程)的东西执行才能执行 invokeLater:后面的程序和这个参数的线程对象可以并行,异步地执行 invokeLater一般用于在线程里修改

    98120

    多线程面试50题(转)

    一个很明显的原因是JAVA提供的锁是对象级的不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。...它是一个静态方法而且只保证当前线程放弃CPU占用不能保证使其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂停状态后马上又被执行。点击这里查看更多yield方法的相关内容。...这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。更多详细信息请点击这里。 40) Swing是线程安全的吗? 为什么?   ...点击这里查看更多swing和线程安全的相关内容。 41) Java中invokeAndWait 和 invokeLater有什么区别?   ...这两个方法是Swing API 提供给Java开发者用来从当前线程不是事件派发线程更新GUI组件用的。

    30820

    Java applet详解

    因为applets只有在HTML网页上有效,所以你不应该在用户离开包含Applet的页面后遗漏任何资源. paint():该方法在start()方法之后立即被调用,或者在applet需要重绘在浏览器的时候调用...第一个applet程序 applet必须通过html文件使用浏览器或者是命令行中的appletviewer命令才能运行,在此使用浏览器过于麻烦,所以在下面我们都将使用命令行,来执行。 1)....然后因为在运行applet的时候,首先是处理 标签中的内容,然后执行init()方法里面的内容,所以,输出12。.../其中theApplet是Javax.swing.JApplet类型的对象 特别注明:JApplet是顶层的Swing容器,其内部用一个隐含的根面板(JRootPanel)作为惟一的直接后代,根面板中的内容面板...画applet 当屏幕需要更新以显示新的内容,由update()和paint()方法完成。 update():取Graphics类对象为参数。

    1.3K20

    Java Swing用户界面组件:复选框+ 滑块+组合框+边界+单选按钮

    图9-15所示的程序中有两个复选框,其中一个用于打开或关闭字体斜体属性,另一个用于加粗属性。注意第二个复选框有焦点,这一点可以由它周围的矩形框看出。...调用setEditable方法可以编辑组合框。注意编辑只会影响当前项,不改变列表内容。 在例子中,用户可以选择字体风格列表(Serif、SansSerif、Monospaced等)选择字体。...—组合框将调用每项的toString方法显示内容。...每个滑块都安装了一个改变事件监听器,它负责把当前的滑块值显示框架底部的文本域中。...一旦某个参数是浮点值,就会调用第二个构造器。这个构造器将值设置为Double对象。 微调控制器没有限定只能是数值类型,可以构造一个在任何值的集合中迭代的微调控制器。

    7.1K10

    Java线程面试题 Top 50

    一个很明显的原因是JAVA提供的锁是对象级的不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。...它是一个静态方法而且只保证当前线程放弃CPU占用不能保证使其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂停状态后马上又被执行。点击这里查看更多yield方法的相关内容。...这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。更多详细信息请点击这里。 40) Swing是线程安全的吗? 为什么?...点击这里查看更多swing和线程安全的相关内容。 41) Java中invokeAndWait 和 invokeLater有什么区别?...这两个方法是Swing API 提供给Java开发者用来从当前线程不是事件派发线程更新GUI组件用的。

    1.1K20

    Java线程面试题 Top 50

    当run() 或者 call() 方法执行的时候线程会自动结束,如果要手动结束一个线程,你可以用volatile 布尔变量来退出run()方法的循环或者是取消任务来中断线程。...一个很明显的原因是JAVA提供的锁是对象级的不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。...一个FutureTask对象可以对调用了Callable和Runnable的对象进行包装,由于FutureTask也是调用了Runnable接口所以它可以提交给Executor来执行。...从JDK1.5开始,Java API提供了Executor框架让你可以创建不同的线程池。...这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。 40) Swing是线程安全的吗?为什么?

    1.1K20

    阿里P8架构师总结Java并发面试题(精选)

    两种方式:java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread...另一个线程必须等待当前线程执行这个代码块以后才能执行该代码块。...程序将发生活锁直到在相应的对象上有线程调用Object.notify()或者Object.notifyAll()。 2,当所有线程卡在无限循环中。 十三、什么是Java Timer类?...十七、Java中invokeAndWait 和 invokeLater有什么区别? 这两个方法是Swing API 提供给Java开发者用来从当前线程不是事件派发线程更新GUI组件用的。...Java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为Java 类,不是作为语言的特性来实现。

    1K10

    Java多线程与并发面试题

    两种方式:java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread...另一个线程必须等待当前线程执行这个代码块以后才能执行该代码块。   ...程序将发生活锁直到在相应的对象上有线程调用Object.notify()或者Object.notifyAll()。 2,当所有线程卡在无限循环中。 13,什么是Java Timer类?...17,Java中invokeAndWait 和 invokeLater有什么区别? 这两个方法是Swing API 提供给Java开发者用来从当前线程不是事件派发线程更新GUI组件用的。...Java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为Java 类,不是作为语言的特性来实现。

    69420

    使用ConcurrentHashMap实现高效缓存框架

    此时该线程还未执行到cache::put方法,另一个线程也调用了cache::get方法,其也将得到一个空的result,这样这两个线程还是有可能执行两次Computable::compute方法,并且由于...,另一个线程也传入同样的参数想要获取计算结果,其也发现cache中没有缓存结果,那么其也会创建一个新的FutureTask对象,并调用FutureTask::run方法计算结果。...()方法,并且返回了一个null到局部变量f中,此时另一个线程也会调用cache::putIfAbsent()方法,由于第一个线程已经将相关键值对存入到cache中了,那么第二个线程将获得第一个线程创建的...FutureTask对象,并且将其替换给当前线程中的局部变量f,并且其判断f不为null,那么其会调用f::get()方法,此时第一个线程正在执行FutureTask::run方法,如果其已经计算完成...,那么其会返回结果给第一个线程,第二个线程是直接执行的FutureTask::get方法,如果第一个线程执行完成,那么第二个线程将直接获取结果返回,如果第一个线程没有执行完成,那么第二个线程将等待第一个线程执行完成后再返回结果

    1.5K20
    领券