当我在main方法中创建GUI时,GUI似乎没有显示

时间:2013-09-29 21:38:54

标签: java swing user-interface

我无法让我的GUI显示,我确信我遗漏了一些非常简单的东西。这是作业。包含GUI的类在这里:

public class SorcGUI extends JFrame{

    public void SorcGUI(){
        JTextArea jta = new JTextArea();
        JPanel jp1 = new JPanel();
        setTitle ("Sorcerers Cave");
        setSize (600, 600);
        setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

        JButton jbsearch = new JButton("Search");
        JTree jTree = null;
        JScrollPane treeView = new JScrollPane(jTree);

        JButton jbshow = new JButton("Show Contents");
        JButton jbread = new JButton("Import File");
        JScrollPane jsoutput = new JScrollPane(jta);
        JTextField jtfsearch = new JTextField("  enter search term  ");
        JLabel jlsearch = new JLabel("Search Type : ");
        JComboBox jcbsearch = new JComboBox <> ();
        jcbsearch.addItem ("index");
        jcbsearch.addItem ("Type");
        jcbsearch.addItem ("weight");

        //create a panel to hold the buttons and text fields

        jp1.add(jbread);     
        jp1.add(jbshow);  
        jp1.add(jtfsearch);
        jp1.add(jlsearch);
        jp1.add(jcbsearch);        
        jp1.add(jbsearch);
        jp1.add(treeView);


        //add the components to the GUI
        add(jp1, BorderLayout.PAGE_START);
        add(jsoutput, BorderLayout.CENTER);


        setVisible(true);

        jbread.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                SorcCave sc = new SorcCave();
            }
        });
        jbshow.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("show");
            }
        });        
        jbsearch.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("search");
            }
        });

我创建GUI的方式只是将以下内容添加到我的main方法中:

SorcGUI gui = new SorcGUI();

该程序只需运行三秒即可构建成功,从不显示GUI。我试图通过将GUI内容放入其自己的类文件来清理我的项目。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

void的构造函数中删除SorcGUI关键字,以便可以将组件添加到父容器中

public SorcGUI() {

阅读:Providing Constructors for Your Classes

答案 1 :(得分:1)

我复制粘贴你的代码并评论了jbread动作方法,它在Eclipse IDE中的新Java项目中工作。

我只从构造函数方法中删除了'void'。

enter image description here