标签: swingutilities

Java SwingUtilities.invokeLater

.addActionListener(new ActionListener(){
        public void actionPerformed (ActionEvent e){
            try{
                ta.append("Searching Initiated at: "+datetime()+"\n");
                gui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                task.execute();
                javax.swing.SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        gui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
                    }
                });
                //Enable the next stage in the YD process and disable the previously executed functions
                clusAn.setEnabled(true);
                open.setEnabled(false);
                statCl.setEnabled(false);
            }catch (Exception IOE){
                }
        }
    });
Run Code Online (Sandbox Code Playgroud)

嗨,我设计的这个应用程序的最后阶段有点痛苦.

基本上,当用户点击按钮时,我会喜欢它,所以光标变成'等待'版本,然后一旦后台进程(task.execute)完成,光标就会恢复正常.

task.execute不在同一个类中,因此我不能直接调用"gui.setCursor",因为它不能将GUI识别为变量.

不知道该怎么做,所以任何建议都会很棒

感谢:D

java swing cursor invokelater swingutilities

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

为什么不能自动使用invokeLater方法(使用import javax.swing.SwingUtilities)?

以下代码执行正常:

public static void main(String [] args) {
        Runnable r = new Runnable() {
            public void run() {
                createGUI();
            }
        } ;

        javax.swing.SwingUtilities.invokeLater(r);
    }
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么以下代码无法编译:

 import javax.swing.SwingUtilities;

    public static void main(String [] args) {
                Runnable r = new Runnable() {
                    public void run() {
                        createGUI();
                    }
                } ;

                invokeLater(r);
        }
Run Code Online (Sandbox Code Playgroud)

之间有什么differenc javax.swing.SwingUtilities.invokeLater(r);import javax.swing.SwingUtilities; invokeLater(r);

java swing invokelater swingutilities

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

SwingUtilities.updateComponentTreeUI() 方法是否将当前 L&F 设置为所有超级组件和子组件?

背景:

从文档中可以看出,该方法SwingUtilities.updateComponentTreeUI()要求树(什么树?)中的每个组件调用该方法来更新自己的UI 属性updateUI()SwingUtilities.updateComponentTreeUI()强烈建议在我们设置LAF之后调用,调用方法:UIManager.setLookAndFeel(LAFClassName),否则LAF主题无法应用于某些组件,最糟糕的是,某些组件无法重新设计(并且可能会抛出一些异常?)。

我对这类事情很陌生,在发现更具启发性的方法SwingUtilities.updateComponentTreeUI() UIManager.setLookAndFeel(LAFClassName)我发现了该方法。

在发现之前SwingUtilities.updateComponentTreeUI()我一直遇到一些问题/Exceptions/NullPointerExceptions,事实是我真的不明白它们的原因,直到我没有发现该SwingUtilities.updateComponentTreeUI()方法,这让我明白树中的某些组件不能被更新为新的 LAF。

具体/实际问题:

例如,如果我有一个

子框架

(动态实例化或由 ActionEvent(单击)触发)

主框架

),我在其中设置外观属性,然后调用SwingUtilitiesupdateComponentTreeUI()传递给它的引用mainJFrame

SwingUtilities.updateComponentTreeUI(mainJFrame),

最后一个是否会更新其所有子组件/subJFrames(从而更新subJFrame我设置 LAF 的位置)?

这不是一个微不足道的问题(还要记住文档所说的内容),因为我调用UIManager.setLookAndFeel(LAFClassName)中的方法subJFrame(这个调用实际上做了什么?),然后我调用SwingUtilities.updateComponentTreeUI()方法传递给它一个对 的引用mainJFrame,那么什么是LAF 主题将应用于mainJFrame?的所有子组件 如果某些子组件/subJFrame尚未初始化

java swing look-and-feel swingutilities

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

java applet:JProgressBar仅在完成时更新/刷新

我只是尝试迭代循环并更新循环JProgressBar内部的值,启动SwingUtilities.invokeLater..但它只在完成后更新.下面是我的简单代码:

import java.awt.Color;
import java.awt.Rectangle;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ProgressBar extends JApplet {
    JProgressBar pg = null;
    JPanel panel = null;
    JButton start = null;
    int i;

    public void init() {
        pg = new JProgressBar(0, 100);
        pg.setStringPainted(true);
        this.setSize(1200, 600);
        this.setLayout(null);
        panel = new JPanel();
        panel.setLayout(null);
        panel.setBackground(Color.white);
        this.setContentPane(panel);
        this.setVisible(true);
        pg.setBounds(new Rectangle(630, 20, 150, 30));
        add(pg);


        start = new JButton("start");
        start.setBounds(new Rectangle(330, 20, 200, 30));
        start.setBackground(Color.lightGray); …
Run Code Online (Sandbox Code Playgroud)

java applet swing jprogressbar swingutilities

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

Java SwingUtilities.invokeLater()使用拖放进行计时

Java Swing SwingUtilities.invokeLater()允许您将一个线程入队,以便在处理完最后一个AWT事件(用户手势)后运行.

invokeLater()保证等到拖放动作完成后?

java swing drag-and-drop swingutilities

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

如何将鼠标监听器添加到JPanel图像?

我在JPanel上使用以下代码绘制了BufferedImage.

protected void paintComponent(Graphics g) {
    if (image != null) {
        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D) g;

        double x = (getWidth() - scale * imageWidth) / 2;
        double y = (getHeight() - scale * imageHeight) / 2;
        AffineTransform at = AffineTransform.getTranslateInstance(x, y);
        at.scale(scale, scale);
        g2.drawRenderedImage(image, at);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何向该图像添加鼠标单击侦听器?另外,我想获得图像的点击坐标,而不是JPanel.

java swing jpanel mouse-listeners swingutilities

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

SwingUtilities invokeLater的主要目的

我有这段代码

import javax.swing.SwingUtilities;

public class Client1 {

    public static void main( String[] args ) {

        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                //new MyWindow( "Bayog" );
                new MyWindowV2( "Bayog" );
            }
        } );   
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我不使用SwingUtilities有什么区别?

java swing invokelater event-dispatch-thread swingutilities

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

IllegalArgumentException 将窗口添加到容器。

我是 Java swing 的新手。从主类调用 Jframe 时确实遇到问题。它可能是重复的,但我无法找出为什么我的代码不起作用。所以我在这里发帖。

主班

public static void main(String[] args) {
    // TODO code application logic here
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            SendMail sendMail = new SendMail();
            JFrame frame = new JFrame();                                
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(sendMail,BorderLayout.CENTER);
            frame.pack();
            frame.setVisible(true);
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

J框架

public class SendMail extends javax.swing.JFrame {

/**
 * Creates new form SendMail
 */
public SendMail() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do …
Run Code Online (Sandbox Code Playgroud)

java swing swingutilities

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