Java Swing

1 Use invokeLater() to enqueue the UI update operations to EDT(event dispatching thread) --Schedule a job for the event-dispatching thread: creating and showing this application's GUI.(For thread safety, this method should be invoked from the event-dispatching thread)

2 Create a new thread to process image

3 After image processed use invokeLater() again to enqueue the UI update operations to EDT

package components;

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

/* TopLevelDemo.java requires no other files. */
public class TopLevelDemo {
    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("TopLevelDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Create the menu bar.  Make it have a green background.
        JMenuBar greenMenuBar = new JMenuBar();
        greenMenuBar.setOpaque(true);
        greenMenuBar.setBackground(new Color(154, 165, 127));
        greenMenuBar.setPreferredSize(new Dimension(200, 20));

        //Create a yellow label to put in the content pane.
        JLabel yellowLabel = new JLabel();
        yellowLabel.setOpaque(true);
        yellowLabel.setBackground(new Color(248, 213, 131));
        yellowLabel.setPreferredSize(new Dimension(200, 180));

        //Set the menu bar and add the label to the content pane.
        frame.setJMenuBar(greenMenuBar);
        frame.getContentPane().add(yellowLabel, BorderLayout.CENTER);

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

Although Swing's model architecture is sometimes referred to as a Model-View-Controller (MVC) design, it really **isn't. **Swing components are generally implemented so that the view and controller are indivisible, implemented by a single UI object provided by the look and feel. The Swing model architecture is more accurately described as a separable model architecture. If you're interested in learning more about the Swing model architecture, see A Swing Architecture Overview, an article in The Swing Connection.
see my github project seam carver.

References:
https://docs.oracle.com/javase/tutorial/uiswing/examples/components/TopLevelDemoProject/src/components/TopLevelDemo.java

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 他略显疲惫的推开了书房的门。也就从他决定推开的那一刻起,画面开启了迷人的篇章。 大大的空间除了他一人之外,再也找不...
    悄然Edward阅读 1,477评论 0 1
  • 小时候很喜欢往爸爸的会议室跑,在那里听他们交谈。虽然那时候我根本听不懂他们在讲点什么,但是每一次坐在那里都会不自觉...
    健恒阅读 271评论 0 2
  • 2017/7月1至2017/10/1日这90天实践金刚智慧种子计划如下: 财富增长的动机和发愿: 1、让合作伙伴和...
    钱好天德高照福星护守阅读 397评论 0 0
  • Isabelle,Isabel 源自西班牙语和拉丁语,是 Elizabeth 伊丽莎白的变体,意思是"God's ...
    木点先生阅读 1,473评论 0 0