本文介绍了调用内部类的JFrame并隐藏外部类的JFrame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我调用内部类JFrame时,它被调用并显示,但是外部类JFrame没有隐藏.在这里,我提供了我的代码.具体来说,我正在尝试填写表格,然后我想预览一下我写的表格.

When i am calling the inner class JFrame , it is called and it is displaying, but the outer class JFrame is not hiding. here i am providing my code.To be very specific, I am trying to fill a form and then i want to preview the form what i have written.

package com.vote.rmc;

public class LRegister extends JFrame implements ActionListener {

    final public JFrame rframe = new JFrame();
    JLabel

    public LRegister() {

        rframe.setSize(800, 600);
        rframe.setLocationRelativeTo(null);
        cp = getContentPane();
        cp.setLayout(null);
        setSize(550, 300);
        rframe.setTitle("User Registration Form");
        cp.setBackground(new Color(140, 180, 180));

        JTextArea plainTextArea = new JTextArea();
        JScrollPane scrollPanePlain = new JScrollPane(plainTextArea);
        cp.add(scrollPanePlain);
        scrollPanePlain.setBounds(150, 250, 150, 100);
        scrollPanePlain.setVisible(true);

        CFirstName = new JLabel("First Name");
        CLastName = new JLabel("Last Name");
        DOB = new JLabel("Date Of Birth");
        FatherName = new JLabel("Father's Name");
        PhoneNumber = new JLabel("Phone Number");
        address = new JLabel("Address");
        departmentName = new JLabel("Department Name");
        Year = new JLabel("Year");
        EmailID = new JLabel("Email ID");
        jpic = new JLabel("Upload your Picture");

        l = new JLabel("Candidates Information");
        jlmsg = new JLabel("", JLabel.CENTER);

        Cfname = new JTextField(10);
        Clname = new JTextField(10);
        birth = new JTextField(10);
        Fname = new JTextField(10);
        PhNum = new JTextField(10);
        addrss = new JTextField(10);
        deptName = new JTextField(10);
        Yr = new JTextField(10);
        mailID = new JTextField(10);

        jbsubmit = new JButton("PREVIEW");

        jbrowse = new JButton("BROWSE PICTURE");
        jbexit = new JButton("CLOSE");

        l.setBounds(270, 10, 250, 35);
        CFirstName.setBounds(10, 50, 100, 35);
        Cfname.setBounds(150, 55, 150, 25);

        CLastName.setBounds(400, 50, 500, 35);
        Clname.setBounds(550, 50, 150, 25);

        DOB.setBounds(10, 100, 100, 35);
        birth.setBounds(150, 105, 150, 25);

        FatherName.setBounds(10, 150, 100, 35);
        Fname.setBounds(150, 155, 150, 25);

        PhoneNumber.setBounds(400, 100, 500, 35);
        PhNum.setBounds(550, 100, 150, 25);

        departmentName.setBounds(400, 150, 500, 35);
        deptName.setBounds(550, 150, 150, 25);

        EmailID.setBounds(10, 190, 150, 50);
        mailID.setBounds(150, 200, 150, 25);

        address.setBounds(10, 250, 100, 35);
        addrss.setBounds(150, 250, 150, 100);

        Year.setBounds(400, 200, 500, 35);
        Yr.setBounds(550, 200, 150, 25);

        jbsubmit.setBounds(150, 380, 92, 25);
        //jbnew.setBounds(300,380,92,25);
        jbexit.setBounds(450, 380, 92, 25);

        jpic.setBounds(400, 250, 500, 35);
        jbrowse.setBounds(550, 253, 150, 25);

        jbsubmit.addActionListener(this);
        //jbnew.addActionListener(this);
        jbrowse.addActionListener(this);
        jbexit.addActionListener(this);

        cp.add(jpic);
        cp.add(Cfname);
        cp.add(CFirstName);
        cp.add(CLastName);
        cp.add(DOB);
        cp.add(EmailID);
        cp.add(FatherName);
        cp.add(Clname);
        cp.add(Fname);
        cp.add(departmentName);
        cp.add(deptName);
        cp.add(Year);
        cp.add(birth);
        cp.add(Fname);
        cp.add(PhNum);
        cp.add(addrss);
        cp.add(Yr);
        cp.add(mailID);

        cp.add(DOB);
        cp.add(PhoneNumber);
        cp.add(address);
        cp.add(jbsubmit);
        //cp.add(jbnew);
        cp.add(jbexit);
        cp.add(jbrowse);
        cp.add(l);

        rframe.add(cp);
        rframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        rframe.setVisible(true);

    }

    public void actionPerformed(ActionEvent ae) {
        String action = ae.getActionCommand();

        if (action == "PREVIEW") {
            new B();

            rframe.setVisible(false);

        }

        if (action == "CLOSE") {
            rframe.setVisible(false);
        }

        if (action == "BROWSE PICTURE") {
            if (ae.getSource() == jbrowse) {
                analizepath();
                rframe.setVisible(true);
            }
        }

    }

    private File getFile() {
        JFileChooser filechooser = new JFileChooser();
        filechooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        @SuppressWarnings("unused")
        int result = filechooser.showOpenDialog(this);
        File filename = filechooser.getSelectedFile();
        if ((filename == null) || (filename.getName().equals(""))) {
            JOptionPane.showMessageDialog(this, "invalid filename", "invalidfilename", JOptionPane.ERROR_MESSAGE);
        }
        return filename;
    }

    public void analizepath() {
        File name = getFile();

        path = name.getAbsolutePath();
        picture = new ImageIcon(path);
        pic = new File(path);
        try {
            inputStream = new FileInputStream(pic);
        } catch (Exception d) {
            System.out.println(d);
        }
        System.out.print(path);
    }

    class B {

        JFrame frame = new JFrame();

        public B() {

            B.this.frame.setSize(800, 600);
            B.this.frame.setLocationRelativeTo(null);
            cp = getContentPane();
            cp.setLayout(null);
            setSize(550, 300);
            B.this.frame.setTitle("Preview Form");
            cp.setBackground(new Color(140, 180, 180));

            JTextField c = LRegister.this.Cfname;
            String cfn = c.getText();
            System.out.println(cfn);

            CFirstName = new JLabel(cfn);

            CLastName = new JLabel("Last Name");

            DOB = new JLabel("Date Of Birth");

            FatherName = new JLabel("Father's Name");

            PhoneNumber = new JLabel("Phone Number");

            address = new JLabel("Address");

            departmentName = new JLabel("Department Name");

            Year = new JLabel("Year");

            EmailID = new JLabel("Email ID");

            jpic = new JLabel("Your Picture");

            l = new JLabel("Preview Your Form Before Submitting");

            jlmsg = new JLabel("", JLabel.CENTER);

            l.setBounds(270, 10, 250, 35);
            CFirstName.setBounds(10, 50, 100, 35);
            CLastName.setBounds(400, 50, 500, 35);
            DOB.setBounds(10, 100, 100, 35);
            FatherName.setBounds(10, 150, 100, 35);
            PhoneNumber.setBounds(400, 100, 500, 35);
            departmentName.setBounds(400, 150, 500, 35);
            EmailID.setBounds(10, 190, 150, 50);
            address.setBounds(10, 250, 100, 35);
            Year.setBounds(400, 200, 500, 35);
            jpic.setBounds(400, 250, 500, 35);

            cp.add(jpic);
            cp.add(CFirstName);
            cp.add(CLastName);
            cp.add(DOB);
            cp.add(EmailID);
            cp.add(FatherName);
            cp.add(departmentName);
            cp.add(Year);
            cp.add(DOB);
            cp.add(PhoneNumber);
            cp.add(address);
            cp.add(l);

            frame.repaint();
            B.this.frame.add(cp);
            B.this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            B.this.frame.setVisible(true);

        }

    }

推荐答案

您正在创建JFrame的多个不同实例,它们彼此之间没有连接...

You're creating multiple different instance of JFrame which have no connection to each other...

public class LRegister extends JFrame implements ActionListener {

    final public JFrame rframe = new JFrame();

LRegisterJFrame,在其上(据我所知,您可以在其中构建UI).但是,然后您尝试更改rframe的可见性状态?

LRegister is a JFrame, onto which (from near as I can tell) you build you UI. But then you try and change the visibility state of rframe?

您可以考虑使用 CardLayout 使用不同的框架,但这意味着您将需要开始使用布局管理器直接

最好先通读如何阅读比较Java中的字符串?使用多个JFrame:良好或不良做法?

这篇关于调用内部类的JFrame并隐藏外部类的JFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 23:21