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,472評論 0 1
  • 小時候很喜歡往爸爸的會議室跑,在那里聽他們交談。雖然那時候我根本聽不懂他們在講點什么,但是每一次坐在那里都會不自覺...
    健恒閱讀 270評論 0 2
  • 2017/7月1至2017/10/1日這90天實踐金剛智慧種子計劃如下: 財富增長的動機和發愿: 1、讓合作伙伴和...
    錢好天德高照福星護守閱讀 390評論 0 0
  • Isabelle,Isabel 源自西班牙語和拉丁語,是 Elizabeth 伊麗莎白的變體,意思是"God's ...
    木點先生閱讀 1,463評論 0 0