2016-10-01 63 views
1

test.java幀中添加不起作用到另一個Java文件

import javax.swing.JFrame; 

public class test { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setVisible(true); 
     frame.setSize(600, 600); 

    } 

} 

我的其他Java文件test2.java

import javax.swing.JButton; 

public class test2 { 

    public static void main(String[] args) { 
     JButton Button = new JButton(); 
     frame.add(Button); 

    } 

} 

我試圖調用框架test2.java

+0

您需要延長'test'作爲'公共類測試擴展的JFrame {'和在使用它之前創建一個'test2'的實例:'test frame = new test()'。 –

+0

1)請參閱[檢測/修復代碼塊的懸掛緊支架](http://meta.stackexchange.com/q/251795/155831),以解決問題,我不再擔心修復問題。 2)請學習常用的Java命名規則(命名約定 - 例如'EachWordUpperCaseClass','firstWordLowerCaseMethod()','firstWordLowerCaseAttribute',除非它是'UPPER_CASE_CONSTANT')並且一致地使用它。 –

回答

1

原因你得到這個問題訪問test

當你運行一個Java應用程序時,應用程序的main函數將被調用。因此,每個應用程序只能有一個main函數。

在你的情況下,你有2 main函數。把它想成2種不同的應用程序。以下情形正在發生:

  • 當您運行Test類,您的應用程序創建一個新的JFrame對象。這是非常多的,它結束了。它不知道Test2類存在。

  • 當您運行Test2類時,您的應用程序正在創建一個新的JButton對象。 儘管,您的Test2類沒有參考框架變量(這就是爲什麼你得到一個錯誤)。它甚至不知道有一個Test類。


爲了您的情況來解決這個問題,試試這個:

Test.java

public class Test 
{ 
    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame(); 
     frame.setVisible(true); 
     frame.setSize(600, 600); 

     // By passing the frame as a reference, the function 
     // will be able to add the button to this frame. 
     Test2.addButton(frame); 
    } 
} 

Test2.java

public class Test2 
{ 
    public static void addButton(JFrame frame) 
    { 
     JButton button = new JButton(); 
     frame.add(button); 
    } 
} 

OOP方法:

在這裏,我做了一個Driver類,將在Test2MyFrame類連接在一起。

驅動程序。java的

public class Driver 
{ 
    public static void main(String[] args) 
    { 
     MyFrame frame = new MyFrame(); 
     Test2.addButton(frame); 
    } 
} 

MyFrame.java

public class MyFrame extends JFrame 
{ 
    public MyFrame() 
    { 
     this.setSize(600, 600); 
     this.setVisible(true); 
    } 
} 

Test2.java

public class Test2 
{ 
    public static void addButton(JFrame frame) 
    { 
     JButton button = new JButton(); 
     frame.add(button); 
    } 
} 
+0

謝謝你那工作 – Nick

+0

@尼克沒問題,很高興我可以幫助:) – Pwnzo

-1

我假設您正在嘗試將Button添加到您在test中創建的JFrame frame爲此,您需要使frame對本質上是可見的Ë全球範圍內,因爲這樣的:

import javax.swing.JFrame; 
public class test { 
    public static JFrame frame; 
    public static void main(String[] args) { 
     frame = new JFrame(); 
     frame.setVisible(true); 
     frame.setSize(600, 600); 
     test2.main(args) 
    } 
} 

,然後,在test2添加按鈕,您需要通過名稱

import javax.swing.JButton; 
public class test2 { 
    public static void main(String[] args) { 
     JButton Button = new JButton(); 
     test.frame.add(Button); 
    } 
} 
+0

@尼克不客氣:) – AlgoRythm

+0

你確定它的工作@迪蘭?因爲我可以看到錯誤 –

+0

線程「主」異常java.lang.NullPointerException \t at test.main(test.java:7)現在我看到我的錯誤:( – Nick

相關問題