作者noapaov (單身漢)
看板java
標題Re: [問題] EventQueue.invokeLater 使用疑問
時間Wed Apr 29 13:43:20 2015
了解, 謝謝回覆, 不過很好奇的是
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
System.out.println("test");
new NewJFrame().setVisible(true);
}
});
這邊做了new Runnable() {public void run(){} }
是代表將Runnable實體化嗎? 看不太懂這句,
我感覺只是把Runnable介面實體化當作invokeLater的參數,
只是介面本身不是不可以實體化嗎? Runnable為什麼可以new呢?
※ 引述《noapaov (單身漢)》之銘言:
: 請教一下各位, 目前在Swing碰到一個疑問,
: 看了大多數的書籍, 在使用Swing建議使用方法如下
: public static void main(String args[]) {
: java.awt.EventQueue.invokeLater(new Runnable() {
: public void run() {
: System.out.println("test");
: new NewJFrame().setVisible(true);
: }
: });
: }
: 也就是視窗程式會開一個thread來處理Event Queue和GUI的事情,
: 但我是用下列方法一樣會產生該視窗物件, 也沒發生什麼錯誤
: public static void main(String args[]) {
: new NewJFrame().setVisible(true);
: }
: 想請問各位大大, 這兩著到底差別在哪? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.69.59.91
※ 文章網址: https://www.ptt.cc/bbs/java/M.1430286202.A.865.html
推 jacktomato: 因為new Runnable的同時後面也實作了這個介面的run方 04/29 14:12
→ jacktomato: 法 所以當然是可以的 04/29 14:13
→ jacktomato: 這等同於 你宣告一個class然後此class實作Runnable 04/29 14:14
→ noapaov: 主要是之前實作介面, 都是類似 04/29 14:47
→ noapaov: class obj implement interface,書上又說介面不能new 04/29 14:48
→ noapaov: 才讓我很困惑 , 怎麼new Runnable()了 04/29 14:49
推 Expsun: Anonymous class 04/29 14:57