2014-11-17 64 views
-2

我的JFrame我的JFrame窗口不會出現,雖然我一直在觀看的教程,我一直在做所有事情,但沒有任何反應。它甚至不給我一個錯誤,這使得它變得更糟。這是代碼:我的JFrame窗口不會出現

import javax.swing.*; 
import java.awt.*; 
public class Window { 

    public class Window { 

    public void newWindow() { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 

     JLabel label = new JLabel("I am a star! A beautiful shining star!", SwingConstants.CENTER); 
     frame.getContentPane().add(label); 


     frame.setVisible(true); 
    } 
} 

(這是第二類,主要的正確鏈接到這一個)

+1

請顯示其他類,即「正確鏈接到這個」的其他類。請說明你是如何致電該課程的代碼的。我猜你的主要方法是在其他課程中,而且你的錯誤也在該課程中。 –

+2

考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這將導致更少的混淆和更好的反應 – MadProgrammer

+2

代碼示例看起來......奇怪......你能證實這正是你所擁有的...... – MadProgrammer

回答

-2

從我所看到的,你不設置JFrame的大小。嘗試,

frame.setSize(500, 500); 
+2

'frame.pack();'好得多.. –

+0

我喜歡我如何去科羅拉多礦業學院的網站,複製並粘貼他們在那裏的代碼,仍然沒有出現。 – CharizardTehGamr

1

JFrame默認使用名爲BorderLayout的layout manager。要查看添加到框架中的組件,請參閱其javadocs。但是,最簡單的選擇是使用FlowLayout。您還應該使用Jframe的pack()方法,其中,根據甲骨文:

此窗口的大小,以適合其子組件的首選大小和佈局。如果任何一個維度小於先前對setMinimumSize方法的調用所指定的最小大小,則窗口的結果寬度和高度會自動放大。

因此,這應該爲你工作:

import javax.swing.*; 
import java.awt.*; 
public class Window { 

    public void newWindow() { 
     JFrame frame = new JFrame(); 
     frame.getContentPane().setLayout(new FlowLayout()); // specify the layout manager 
     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 

     JLabel label = new JLabel("I am a star! A beautiful shining star!", SwingConstants.CENTER); 
     frame.getContentPane().add(label); 

     frame.pack(); // handles sizing of the window 
     frame.setVisible(true); 
    } 
} 

注意,我刪除重複的public class Window聲明,這可能是你沒有看到一個框架在所有的原因。如果它仍然不適用於您,我認爲您沒有撥打newWindow()方法。如果您想通過簡單地撥打new Window();來顯示窗口,則應該將public void newWindow()更改爲public Window()

+2

'JFrame'默認情況下,使用'BorderLayout',據說即使沒有'pack',OP也應該在框架可見時仍然是框架邊框,但是他們聲明它們什麼也看不到。 – MadProgrammer

+0

@MadProgrammer謝謝爲了擡頭;我將編輯帖子 –

+0

謝謝,我剛剛意識到,當我在Eclipse中閱讀我的代碼時,我注意到我實際上使用了newWindow作爲方法,但沒有放在這裏。我想我忘了。 – CharizardTehGamr

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

public class Window { 
public void newWindow() { 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JLabel label = new JLabel("I am a star! A beautiful shining star!", SwingConstants.CENTER); 
    frame.getContentPane().add(label); 
    frame.setVisible(true); 
    frame.pack(); 
    } 
} 
+0

此代碼無法正常工作。你正在調用未定義的方法'pack',並且請刪除第二個類的聲明。 – Tom

+0

@Tom Thanks Man :) – Muhammad

+2

我不喜歡操縱別人的代碼,期望修復縮進。所以我沒有其他「選擇」。如果問題得到解決,我總是會回覆downvote :)。 – Tom

0

當你使你的應用程序它應該有String []args在你的主要方法。

一旦完成,您的代碼應該看起來像這樣!

import javax.swing.JFrame; 

public class myCode() { 
    JFrame myFrame; 
    public static void main(String []args) { 
     myFrame.setTitle("myApp"); 
     myFrame.setSize(800, 600); 
     myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     myFrame.setVisible(true) 
     //your done! 
    }