相关疑难解决方法(0)

SwingUtilities.invokeLater

我的问题与此有关SwingUtilities.invokeLater.我应该什么时候使用它?每次需要更新GUI组件时是否必须使用?它到底是做什么的?是否有替代品,因为它听起来不直观,并添加看似不必要的代码?

java swing multithreading awt event-dispatch-thread

52
推荐指数
4
解决办法
3万
查看次数

SwingUtilities.invokeLater()为什么需要它?

为什么需要将GUI更新代码放入SwingUtilities.invokeLater()

为什么它不能被Swing本身内部照顾?为什么调用者必须关心swing如何处理UI更新?

java swing

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

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

为什么在main方法中使用SwingUtilities.invokeLater?

经过多年的Java编程,我总是习惯于创建main()这样的方法:

public static void main(String[] args) 
{
    runProgram();
}
Run Code Online (Sandbox Code Playgroud)

但是最近我从Web上学习了一些代码并且有时看到这个代码而不是main()上面的常规用法:

public static void main(String[] args) 
{
    SwingUtilities.invokeLater(new Runnable() 
    {
        public void run() 
        {
            runProgram();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道:

  • 为什么要使用这个而不是通常的main()方式?当我试一试时,我看不出有任何区别.
  • 这两种方式有什么区别?

感谢您阅读我和您的答案.

java swing program-entry-point invokelater swingutilities

22
推荐指数
2
解决办法
8978
查看次数

什么是SwingUtilities.invokeLater

可能重复:
SwingUtilities.invokeLater做什么?
SwingUtilities.invokeLater

我已经看过几百次这段代码了:

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          createAndShowGUI();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:做invokeLater()什么?如果我只是在主线程中创建并显示我的GUI,会发生什么样的坏事?

java swing invokelater swingutilities

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

Java EventQueue.为什么一切都应该在invokelater方法中?

在我正在阅读的书中,带有多线程的GUI的每个例子都有类似的东西:

public static void main(String[] args) throws Exception
{
    EventQueue.invokeLater(new Runnable()
    {
        public void run()
        {
            JFrame frame = new SomeKindOfFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

(我的意思是EventQueue).但是不是主(EDT)线程中自动执行的代码?

java swing multithreading event-dispatch-thread

7
推荐指数
2
解决办法
2624
查看次数

为什么使用invokeLater很重要?

我最近发现了一个示例代码:

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

createAndShowGUI()方法打开用户界面窗口.然后我尝试修改代码如下:

public static void main(String[] args) {
    createAndShowGUI();
}
Run Code Online (Sandbox Code Playgroud)

两个版本都同样有效.有什么不同?

java swing invokelater event-dispatch-thread

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

多个JOptionPane输入对话框?

我一直在寻找过去的一个小时,但是我一直找不到想要的解决方案。

我想使用来接受用户的多个输入JOptionPane,但我不希望它们全部都在一个对话框窗口中。我希望它过渡到下一个,或者只是弹出下一个。有没有办法做到这一点JOptionPane

这是我到目前为止的内容:

import java.util.Scanner;
import javax.swing.*;
public class HomeWork2 {


    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        Scanner input2 = new Scanner(System.in);
        Scanner input3 = new Scanner(System.in);
        Scanner input4 = new Scanner(System.in);
        int days, assignments;
        double temperature;
        boolean isRaining;

        JOptionPane.showInputDialog("How many days are left?");
        days = input.nextInt();

        JOptionPane.showInputDialog("How many assignments are due?");
        assignments = input2.nextInt();

        JOptionPane.showInputDialog("What is the temperature outside?");
        temperature = input3.nextDouble();

        JOptionPane.showInputDialog("Is it raining today?");
        isRaining = input4.nextBoolean();

        if(assignments<=0) …
Run Code Online (Sandbox Code Playgroud)

java swing joptionpane

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

什么是SwingUtilities.invokeLater(new Runnable())

谁能用简单的话向我解释这段代码:

SwingUtilities.invokeLater(
    new Runnable(){
        public void run(){
            chatWindow.append(text);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

请任何人给我详细的解释。

java swing

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