当前位置: 首页 > 知识库问答 >
问题:

大括号阻止编译

苏浩瀚
2023-03-14

我目前正在从头开始创建一个 GUI,我在一个页面上包含多个类。不幸的是,有些东西阻止了我看到课程,我认为这与左括号和右括号有关。任何人都可以帮助我解决我出错的地方,所以我以后不要这样做吗?我的程序在 RentalPanel 类中抛出异常。由于某种原因,它没有看到它。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MavGUI2 extends JFrame 
{

    private JDesktopPane theDesktop;

    public MavGUI2()
    {
        super("Mav Rental System");

        theDesktop = new JDesktopPane();

        JMenuBar bar = new JMenuBar();

        JMenu addMenu = new JMenu("Add");
        JMenuItem addRental = new JMenuItem ("Add Rental");
        JMenuItem addCustomer = new JMenuItem("Add Customer");
        addMenu.add(addRental);
        addMenu.add(addCustomer);

        bar.add(addMenu);

        add(theDesktop);
        setJMenuBar(bar);

        addCustomer.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                JInternalFrame frame = new JInternalFrame("Add Customer", true, true, true, true);
                CustomerPanel cp = new CustomerPanel();
                frame.add(cp);
                frame.pack();
                theDesktop.add(frame);
                frame.setVisible(true);
            }
        });

        addRental.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                JInternalFrame frame = new JInternalFrame("Add Rental", true, true, true, true);
                RentalPanel rp = new RentalPanel();
                frame.add(rp);
                frame.pack();
                theDesktop.add(frame);
                frame.setVisible(true);
            }
        });

        JMenu exitMenu = new JMenu("Exit");
        JMenuItem calCharges = new JMenuItem("Calculate Charges");
        JMenuItem close = new JMenuItem("Close");

        close.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        System.exit(0);
                    }
                });

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

        exitMenu.add(calCharges);
        exitMenu.add(close);

        bar.add(exitMenu);
        add(theDesktop);
        setJMenuBar(bar);




    }

    public static void main(String args[])
    {
        MavGUI2 m = new MavGUI2();
        m.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        m.setSize(500,500);
        m.setVisible(true);

    }

    class CustomerPanel extends Panel
    {
        private JLabel nameLabel;
        private JLabel streetLabel;
        private JLabel cityLabel;
        private JLabel stateLabel;
        private JLabel creditLabel;
        private JLabel zipLabel;
        private JLabel submitLabel;
        private JButton submitButton;

        private JTextField nameField;
        private JTextField streetField;
        private JTextField cityField;
        private JTextField stateField;
        private JTextField creditField;
        private JTextField zipField;

        public CustomerPanel()
        {
            setLayout(new GridLayout(7,2));

            nameLabel = new JLabel(" Enter name: ");
            streetLabel = new JLabel(" Enter street: ");
            cityLabel = new JLabel(" Enter city: ");
            stateLabel = new JLabel (" Enter state: ");
            zipLabel = new JLabel(" Enter zip: ");
            creditLabel = new JLabel(" Enter credit card number: ");
            submitLabel = new JLabel(" Click when done!"); 

            nameField = new JTextField(20);
            streetField = new JTextField(20);
            cityField = new JTextField(20);
            stateField = new JTextField(20);
            zipField = new JTextField(20);
            creditField = new JTextField(20);
            submitButton = new JButton(" SUBMIT ");


            MyListener handler = new MyListener();
            submitButton.addActionListener(handler);

            add(nameLabel);
            add(nameField);
            add(streetLabel);
            add(streetField);
            add(cityLabel);
            add(cityField);
            add(stateLabel);
            add(stateField);
            add(zipLabel);
            add(zipField);
            add(creditLabel);
            add(creditField);
            add(submitLabel);
            add(submitButton);

        }

        class MyListener implements ActionListener
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                System.out.printf(nameField.getText() +" " + streetField.getText() + " "+ cityField.getText());

                nameField.setText("");
                streetField.setText("");
                cityField.setText("");
                stateField.setText("");
                zipField.setText("");
                creditField.setText("");
                nameField.requestFocus();
            }       
        }

        class RentalPanel extends Panel
        {
            private JLabel custNameLabel;
            private JLabel numDaysLabel;
            private JLabel perDayLabel;
            private JButton submit2Button;
            private JLabel submit2Label;

            private JTextField custNameField;
            private JTextField numDaysField;
            private JTextField perDayField;

            private JCheckBox furnBox;
            private JCheckBox elecBox;
            private JComboBox<String> furnType;
            String types[] = {"BED", "COUCH", "CHAIR"};

            private JComboBox<String> elecType;
            String type2[] = {"COMPUTER","TV"};

            public RentalPanel()
            {
                setLayout(new GridLayout(6,2));
                ButtonGroup group =  new ButtonGroup();

                furnBox = new JCheckBox(" Furniture ");
                elecBox = new JCheckBox(" Electronic");

                group.add(furnBox);
                group.add(elecBox);

                custNameLabel = new JLabel(" Enter customer name");
                numDaysLabel = new JLabel(" Enter number of days");
                perDayLabel = new JLabel(" Enter price per day");
                submit2Label = new JLabel(" Click when done");
                submit2Button = new JButton(" SUBMIT");

                custNameField = new JTextField(20);
                numDaysField = new JTextField(20);
                perDayField = new JTextField(20);

                furnType = new JComboBox<String>(types);
                elecType = new JComboBox<String>(type2);

                add(custNameLabel);
                add(custNameField);
                add(furnBox);
                add(elecBox);
                add(numDaysLabel);
                add(numDaysField);
                add(perDayLabel);
                add(perDayField);
                add(furnType);
                add(elecType);
                add(submit2Label);
                add(submit2Button);



            }//closes Rental Panel constructor

        }//close rental panel
    }// closes customer panel
}//closes MAVGUI

块引用

共有1个答案

冷越泽
2023-03-14

问题是,RentalPanel类是CustomerPanel内部的非静态内部类。因此,您不能直接从MavGUI2类访问它。使RentalPanelCustomerPanel类成为静态内部类,将解决编译错误。

事实上,最好将它们移动到各自的文件中。

 类似资料:
  • 本文向大家介绍浅析python 中大括号中括号小括号的区分,包括了浅析python 中大括号中括号小括号的区分的使用技巧和注意事项,需要的朋友参考一下 python语言最常见的括号有三种,分别是:小括号( )、中括号[ ]和大括号也叫做花括号{ }。其作用也各不相同,分别用来代表不同的python基本内置数据类型。 1.python中的小括号( ):代表tuple元组数据类型,元组是一种不可变序列

  • 这似乎主要是IE中的一个问题。当有许多图像/脚本要加载时,标记中的文字会在很长一段时间内显示出来,然后在完成文档的编译/插值后消失。 是否有一个共同的原因表明我在做一些普遍错误的事情,或者有一个已知的方法来防止这种情况发生?

  • 我有一个类型TEXT的PostgreSQL列中的数据,我需要做一些字符替换。具体来说,我想用大括号代替方括号。问题是,我只想替换不超过两层深的括号,如果你包括主要的封闭括号。这些字符串可能很长,所以我认为正则表达式可能是最好的方法(函数),但我不擅长正则表达式。这里有一个这样的值的例子: 因此,我希望此字符串更改为: 提前谢谢!

  • 问题内容: 我试图理解下面两个require语句之间的区别。 具体来说,s包装的目的是什么? 它们似乎都分配了电子模块的内容,但是它们的功能显然不同。 谁能给我一些启示? 问题答案: 第二个示例使用解构。 这将调用从所需模块导出的特定变量(包括函数)。 例如(functions.js): 包含在您的文件中: 现在您可以分别给他们打电话了, 相对于: 使用点表示法调用: 希望这可以帮助。 您可以在此

  • 问题内容: 我对以下代码行的语法感到困惑: 数据框对象由2列(“大脑”和“身体”)组成 当我打印x_values时,我得到这样的东西: 就dataframe对象的属性和方法而言,我知道pandas文档,但双括号语法使我感到困惑。 问题答案: 考虑一下: 来源DF: 选择一列-生成Pandas.Series: 选择DataFrame的子集-结果为DataFrame: 结论: 第二种方法允许我们从Da

  • 例如,当我写 它将被格式化为 我如何让它保持两个空格? 编辑: 这与如何在Visual Studio Code中更改缩进是不同的问题?