作者:
noapaov (單身漢)
2015-04-29 13:43:20了解, 謝謝回覆, 不過很好奇的是
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);
: }
: 想請問各位大大, 這兩著到底差別在哪? 謝謝
作者: jacktomato 2015-04-29 14:12:00
因為new Runnable的同時後面也實作了這個介面的run方法 所以當然是可以的這等同於 你宣告一個class然後此class實作Runnable
作者:
noapaov (單身漢)
2015-04-29 14:47:00主要是之前實作介面, 都是類似class obj implement interface,書上又說介面不能new才讓我很困惑 , 怎麼new Runnable()了