Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么赢了';t我的swing GUI从主类启动_Java_Eclipse_Swing_User Interface_Awt - Fatal编程技术网

Java 为什么赢了';t我的swing GUI从主类启动

Java 为什么赢了';t我的swing GUI从主类启动,java,eclipse,swing,user-interface,awt,Java,Eclipse,Swing,User Interface,Awt,我面临的问题是,当我从GUImain类启动程序时,它不会有任何问题,但是当我尝试从main类调用它时,什么都不会打开 我从控制台得到的唯一信息是: <terminated> Main [Java Application] /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/bin/java (5 Dec 2014 14:39:29) 这是我的主课 import java.awt.EventQueue; i

我面临的问题是,当我从GUImain类启动程序时,它不会有任何问题,但是当我尝试从main类调用它时,什么都不会打开

我从控制台得到的唯一信息是:

<terminated> Main [Java Application] /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/bin/java (5 Dec 2014 14:39:29)
这是我的主课

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JTextPane;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JScrollBar;
import javax.swing.JTextField;

public class GUImain 
{
    private JFrame frame;
    private JTextField textField;


    //Launch the application.
    public static void main(String[] args)
    {
        GUImain window = new GUImain();
        window.frame.setVisible(true);
    }

    //Create the application.
    public GUImain() 
    {
        frame = new JFrame();
        frame.setBounds(100, 100, 611, 471);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JButton btnInventory = new JButton("Inventory");
        btnInventory.setBounds(514, 6, 91, 29);
        frame.getContentPane().add(btnInventory);

        JButton btnLoad = new JButton("Load");
        btnLoad.setBounds(453, 6, 68, 29);
        frame.getContentPane().add(btnLoad);

        JButton btnSave = new JButton("Save");
        btnSave.setBounds(404, 6, 54, 29);
        frame.getContentPane().add(btnSave);

        JButton btnOptions = new JButton("Options");
        btnOptions.setBounds(335, 6, 76, 29);
        frame.getContentPane().add(btnOptions);

        JTextArea History = new JTextArea();
        History.setText("lol");
        History.setBounds(6, 6, 329, 343);
        frame.getContentPane().add(History);

        JButton btnEnter = new JButton("Enter");
        btnEnter.setBounds(518, 404, 85, 39);
        frame.getContentPane().add(btnEnter);

        JScrollBar scrollBar = new JScrollBar();
        scrollBar.setBounds(320, 6, 15, 338);
        frame.getContentPane().add(scrollBar);

        textField = new JTextField();
        textField.setBounds(5, 410, 508, 28);
        frame.getContentPane().add(textField);
        textField.setColumns(10);

        JTextArea textArea = new JTextArea();
        textArea.setBounds(6, 357, 600, 42);
        frame.getContentPane().add(textArea);

        JLabel lblMapGoesHere = new JLabel("Map goes here");
        lblMapGoesHere.setBounds(342, 37, 263, 312);
        frame.getContentPane().add(lblMapGoesHere);
    }
}

main
类中的
main
方法只创建一个新的
GUImain
对象,该对象包含一个名为
frame
JFrame
实例,但它永远不可见:

public class Main {
    public static void main(String[] args) {
        ...
        GUImain guiObject = new GUImain();
    }
}
您可以将公共getter添加到此
框架
类成员以使其可见:

public class GUImain {
   ...
   public JFrame getFrame() {
       return this.frame;
   }
}

public class Main {
    public static void main(String[] args) {
        ...
        GUImain guiObject = new GUImain();
        guiObject.getFrame().setVisible(true);
    }
}
或者只需在
GUImain
中添加一个新方法即可显示框架:

public class GUImain {
   ...
   public void displayGUI() {
       this.frame.setVisible(true);
   }
}

public class Main {
    public static void main(String[] args) {
        ...
        GUImain guiObject = new GUImain();
        guiObject.displayGUI();
    }
}

旁注
Swing组件应该在的上下文中创建和更新。请参阅。

您的
main
类中的
main
方法只是创建了一个新的
GUImain
对象,其中包含一个名为
frame
JFrame
实例,但它从来都不可见:

public class Main {
    public static void main(String[] args) {
        ...
        GUImain guiObject = new GUImain();
    }
}
您可以将公共getter添加到此
框架
类成员以使其可见:

public class GUImain {
   ...
   public JFrame getFrame() {
       return this.frame;
   }
}

public class Main {
    public static void main(String[] args) {
        ...
        GUImain guiObject = new GUImain();
        guiObject.getFrame().setVisible(true);
    }
}
或者只需在
GUImain
中添加一个新方法即可显示框架:

public class GUImain {
   ...
   public void displayGUI() {
       this.frame.setVisible(true);
   }
}

public class Main {
    public static void main(String[] args) {
        ...
        GUImain guiObject = new GUImain();
        guiObject.displayGUI();
    }
}

旁注
Swing组件应该在的上下文中创建和更新。请参阅。

您只是在主类中创建了一个GUImain实例。 您应该使其可见,或者运行GUImain的main方法。 试着添加行

frame.setVisible(true);
到GUImain构造函数的末尾。您可以删除

window.frame.setVisible(true);
从主要方法


这将解决问题。但这不是一个好方法。

您只是在主类中创建了一个GUImain实例。 您应该使其可见,或者运行GUImain的main方法。 试着添加行

frame.setVisible(true);
到GUImain构造函数的末尾。您可以删除

window.frame.setVisible(true);
从主要方法


这将解决问题。但这不是一个好方法。

我这样做了,它想出了这个。线程“main”java.lang.Error中出现异常:未解决的编译问题:main.main(main.java:17)中的类型GUImain的方法setVisible(boolean)未定义,并且我在GUImain窗口=new GUImain()之后在GUImain下设置了可见;我这么做了,它就想到了这个。线程“main”java.lang.Error中出现异常:未解决的编译问题:main.main(main.java:17)中的类型GUImain的方法setVisible(boolean)未定义,并且我在GUImain窗口=new GUImain()之后在GUImain下设置了可见;谢谢,我用了第二种方法谢谢,我用了第二种方法