调用内部类的 JFrame 并隐藏外部类的 JFrame



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

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实例...

public class LRegister extends JFrame implements ActionListener {
    final public JFrame rframe = new JFrame();

LRegister是一个JFrame,(据我所知)您可以在其上构建UI。 但是,您尝试更改rframe的可见性状态?

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

读一下 如何在 Java 中比较字符串也是一个好主意?和 使用多个 JFrames:好还是坏的做法?

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);
        }
    }
}

在巡回actionPerformed()中,有三个不同的if语句,每个语句只触发一个帧动作。 这是你的意图吗?如果您希望外框不可见,是否应该添加outerFrame.setVisible(false);

添加所有action == "PREVIEW"action.equals("PREVIEW")

最新更新