帧中添加不起作用到另一个Java文件

问题描述:

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')并且一致地使用它。 –

原因你得到这个问题访问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

我假设您正在尝试将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