首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用内部类的JFrame并隐藏外部类的JFrame

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

Stack Overflow用户
提问于 2013-10-23 14:16:30
回答 2查看 512关注 0票数 0

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

代码语言:javascript
复制
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);

        }

    }
EN

回答 2

Stack Overflow用户

发布于 2013-10-23 14:31:08

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

代码语言:javascript
复制
public class LRegister extends JFrame implements ActionListener {

    final public JFrame rframe = new JFrame();

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

您可以考虑使用CardLayout而不是使用不同的框架,但这意味着您需要开始直接使用Layout Managers

了解一下How do I compare strings in Java?The Use of Multiple JFrames: Good or Bad Practice?也是个好主意

票数 1
EN

Stack Overflow用户

发布于 2013-10-23 14:29:08

代码语言:javascript
复制
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);
        }
    }
}

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

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

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

https://stackoverflow.com/questions/19534152

复制
相关文章

相似问题

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