首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >menuItems单击时未打开Java内部面板

menuItems单击时未打开Java内部面板
EN

Stack Overflow用户
提问于 2014-03-26 19:35:00
回答 1查看 178关注 0票数 1

我试图建立一个小程序,其中有3个菜单项,学生,大学,和出口。我已经差不多完成了,它编译,但学生和大学的菜单项未能打开内部java面板。

这是我的Java 2评论(我真的需要分数)的额外学分问题,作业问题如下:

编写一个程序,用菜单构建桌面应用程序,菜单上有大学面板和学生面板。大学小组有名称和州代码。“学生”面板有名称和id。用户可以分别键入大学或学生的名称和代码或id。每个面板都有一个接受数据、清除字段和重置焦点的提交按钮。每个面板都有一个检查输入方法。Id是一个整数。大学或学生的数据被放置在各自的数组中。

我有一个工作上的例子,我不知道我做错了什么。当单击“学生和大学”时,面板将不会打开。

代码语言:javascript
运行
复制
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class Question4 extends JFrame
{
    private JDesktopPane theDesktop;
    ArrayList<Student> studentList = new ArrayList<Student>();
    ArrayList<University> universityList = new ArrayList<University>();

    public static void main(String args[])
    { 
        Question4 q4 = new Question4();
        q4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        q4.setSize(400,400);
        q4.setLocationRelativeTo(null);
        q4.setVisible(true);
    }

    public Question4()
    {
        super("Question 4");
        theDesktop = new JDesktopPane();
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("Menu");
        JMenuItem studentItem = new JMenuItem("Student");
        JMenuItem universityItem = new JMenuItem("University");
        JMenuItem exitItem = new JMenuItem("Exit");

        exitItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                System.exit(0);
            }
        });

        studentItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                JInternalFrame sFrame = new JInternalFrame("Student",true,true,true);   
                AddStudentPanel sPanel = new AddStudentPanel();
                sFrame.add(sPanel);
                sFrame.pack();
                theDesktop.add(sFrame);
                sFrame.setVisible(true);        
            }
        });

        universityItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                JInternalFrame uFrame = new JInternalFrame("University",true,true,true);    
                AddUniversityPanel uPanel = new AddUniversityPanel();
                uFrame.add(uPanel);
                uFrame.pack();
                theDesktop.add(uFrame);
                uFrame.setVisible(true);        
            }
        });

        menu.add(studentItem);
        menu.add(universityItem);
        menu.add(exitItem);

        bar.add(menu);

        setJMenuBar(bar);
        add(theDesktop);
    }

    private class AddStudentPanel extends JPanel
    {
        private JLabel nameLabel;
        private JLabel idLabel;
        private JLabel submitLabel;
        private JTextField nameField;
        private JTextField idField;
        private JButton submitButton;

        public AddStudentPanel()
        {
            setLayout(new GridLayout (3,2));

            nameLabel = new JLabel("Enter Name");
            idLabel = new JLabel("Enter ID");
            submitLabel = new JLabel("Submit");

            nameField = new JTextField(15);
            idField = new JTextField(15);

            StudentHandler sHandler = new StudentHandler();
            submitButton.addActionListener(sHandler);

            add(nameLabel);
            add(nameField);
            add(idLabel);
            add(idField);
            add(submitLabel);
            add(submitButton);
        }

        class StudentHandler implements ActionListener
        {
            public void actionPerformed(ActionEvent ae)
            {

                if(ae.getSource() == submitButton)
                {
                    if(checkStudentInput())
                    {

                        studentList.add(new Student(nameField.getText(),Integer.parseInt(idField.getText())));
                        nameField.setText("");
                        idField.setText("");
                        nameField.requestFocus();
                    }
                }
            }   

            public boolean checkStudentInput()
            {
                boolean input = true;

                if(nameField.getText().isEmpty())
                {
                    JOptionPane.showMessageDialog(null,"Please enter a name");
                    nameField.requestFocus();
                    input = false;
                }
                else if(idField.getText().isEmpty())
                {
                    JOptionPane.showMessageDialog(null,"Please enter an id");
                    idField.requestFocus();
                    input = false;
                }
                else
                {
                    try
                    {
                        Integer.parseInt(idField.getText());
                    }catch(NumberFormatException nfe)
                    {
                        JOptionPane.showMessageDialog(null,"Please enter an integer for id");
                        idField.setText("");
                        idField.requestFocus();
                        input = false;
                    }
                }

                return input;
            }
        }
    }

    private class AddUniversityPanel extends JPanel
    {
        private JLabel nameLabel;
        private JLabel codeLabel;
        private JLabel submitLabel;
        private JTextField nameField;
        private JTextField codeField;
        private JButton submitButton;

        public AddUniversityPanel()
        {
            setLayout(new GridLayout (3,2));

            nameLabel = new JLabel("Enter Name");
            codeLabel = new JLabel("Enter State Code");
            submitLabel = new JLabel("Submit");

            nameField = new JTextField(15);
            codeField = new JTextField(15);

            UniversityHandler uHandler = new UniversityHandler();
            submitButton.addActionListener(uHandler);

            add(nameLabel);
            add(nameField);
            add(codeLabel);
            add(codeField);
            add(submitLabel);
            add(submitButton);
        }

        class UniversityHandler implements ActionListener
        {
            public void actionPerformed(ActionEvent ae)
            {

                if(ae.getSource() == submitButton)
                {
                    if(checkUniversityInput())
                    {

                        universityList.add(new University(nameField.getText(),Integer.parseInt(codeField.getText())));
                        nameField.setText("");
                        codeField.setText("");
                        nameField.requestFocus();
                    }
                }
            }   


            public boolean checkUniversityInput()
            {
                boolean input = true;

                if(nameField.getText().isEmpty())
                {
                    JOptionPane.showMessageDialog(null,"Please enter a name");
                    nameField.requestFocus();
                    input = false;
                }
                else if(codeField.getText().isEmpty())
                {
                    JOptionPane.showMessageDialog(null,"Please enter an State Code");
                    codeField.requestFocus();
                    input = false;
                }
                else
                {
                    try
                    {
                        Integer.parseInt(codeField.getText());
                    }catch(NumberFormatException nfe)
                    {
                        JOptionPane.showMessageDialog(null,"Please enter an integer for State Code");
                        codeField.setText("");
                        codeField.requestFocus();
                        input = false;
                    }
                }

                return input;
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-26 19:56:48

换行

代码语言:javascript
运行
复制
add(theDesktop);

代码语言:javascript
运行
复制
setContentPane(theDesktop);

你应该可以继续。

您还需要在submitButtonAddStudentPanel中初始化NullPointerException以避免NullPointerException

代码语言:javascript
运行
复制
submitButton = new JButton()

希望这能帮助你完成你的任务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22671319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档