我如何在我的主电源中调用此功能?
private JFrame getMainpageframe1() {
if (mainpageframe1 == null) {
mainpageframe1 = new JFrame();
mainpageframe1.setSize(new Dimension(315, 306));
mainpageframe1.setContentPane(getMainpage());
mainpageframe1.setTitle("Shopping For Less: Main Page");
mainpageframe1.setVisible(true);
mainpageframe1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
return mainpageframe1;
}
public static void main(String[] args) {
//call that function to output the JFrame?
}
感谢
答案 0 :(得分:1)
首先,您需要将您的GUI内容放在EDT上。 Java库为您提供了一些帮助方法,使用SwingUtilities可以让您的生活更轻松。
其次,我尝试重构一下代码,并可能将您正在构建的JFrame移动到一个单独的类中。在这个代码示例中,我使它成为包含main方法的同一个类的一部分,我在这里扩展JFrame。
public class YourApp extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
YourApp app = new YourApp();
app.setupFrame();
}
});
}
private setupFrame() {
this.setSize(new Dimension(315, 306));
this.setContentPane(getMainpage());
this.setTitle("Shopping For Less: Main Page");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
答案 1 :(得分:0)
YOurClass instance = new YourClass();
instance.getMainpageframe1();
但是这段代码非常糟糕。你应该至少移动setVisible() - 否则代码将在该点处阻塞,并且该方法将不再返回,直到该帧不再可见为止。
YOurClass instance = new YourClass();
instance.getMainpageframe1().setVisible(true);
答案 2 :(得分:0)
public class YourClass {
public static void main(String[] args) {
YourClass instance = new YourClass();
JFrame frame = instance.getMainpageframe1();
}
}
您必须在main中创建整个类的实例的原因是因为您无法从静态函数调用非静态函数。
答案 3 :(得分:0)
public class YourClass{
JFrame mainpageframe1;
private JFrame getMainpageframe1() {
if (mainpageframe1 == null) {
mainpageframe1 = new JFrame();
mainpageframe1.setSize(new Dimension(315, 306));
mainpageframe1.setContentPane(getMainpage());
mainpageframe1.setTitle("Shopping For Less: Main Page");
mainpageframe1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainpageframe1.setVisible(true);
}
return mainpageframe1;
}
public static void main(String[] args) {
YourClass yourClass = new YourClass();
yourClass.getMainpageframe1();
}
}