2015-08-14 95 views
0

我想在GUI中製作一個Hello World !!!程序的swing版本,但是我一直在收到一個像我之前提到的錯誤。標題下面是我的代碼:這個方法(setSize,setDefaultCloseOperation ...對於HelloFrame類型是未定義的

import javax.swing.*; 

public class HelloFrame 
{ 

    public static void main(String[] args) 
    { 
     new HelloFrame(); 
    } 

    public HelloFrame() 
    { 
     this.setSize(200, 100); 
     this.setDefaultCloseOperation(
      JFrame.EXIT_ON_CLOSE); 
     this.setTitle("Hello World!"); 
     this.setVisible(true); 
    } 
} 

錯誤在:

this.setSize(200, 100); 
    this.setDefaultCloseOperation(
     JFrame.EXIT_ON_CLOSE); 
    this.setTitle("Hello World!"); 
    this.setVisible(true); 

我真的很感激一些答案謝謝

編輯1:噢!是的,我忘了提我使用java。

+0

請歸檔此線程。 – Cakedy

回答

4

在你的例子中,HelloFrameimplicitly延伸Object。因此,this是指Object,它沒有JFrame方法。相反,讓HelloFrame包含 a JFrame,如下所示。此外,

  • 我添加了一個JLabel給框架的東西被調用pack()後顯示。

  • Swing GUI對象應該在event dispatch thread上構建和操縱只有

enter image description here

import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

/** @see https://stackoverflow.com/a/32016671/230513 */ 
public class HelloFrame { 

    private void display() { 
     JFrame f = new JFrame("HelloFrame"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setTitle("Hello World!"); 
     f.add(new JLabel("Hello World! Hello World!"), JLabel.CENTER); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new HelloFrame()::display); 
    } 
} 
+0

我現在就試試看。 – Cakedy

+0

它的工作原理!我將弄清楚如何添加某種按鈕來觸發Hello World!事情。 – Cakedy

+0

好的垃圾。我會試試看。 – Cakedy

相關問題