test.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 :(得分:1)
运行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);
}
}
在这里,我创建了一个Driver
类,可以将Test2
和MyFrame
类连接在一起。
<强> Driver.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);
}
}
答案 1 :(得分:-1)
我假设您正在尝试将Button
添加到您在frame
中创建的JFrame test
中。为此,您需要制作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
中添加按钮,您需要按名称访问test
import javax.swing.JButton;
public class test2 {
public static void main(String[] args) {
JButton Button = new JButton();
test.frame.add(Button);
}
}