按钮不显示与其相连的框架

问题描述

我正在尝试为我正在制作的应用程序编写代码,我的主框架上有 6 个按钮。当我按下其中一个按钮时,它会调出一个设置了选项卡式布局的框架。

我已正确编码选项卡式框架,当我将每个框架设置为可见时,它们会出现在屏幕上,但在按下按钮时不会出现。

我有连接到按钮和框架的动作侦听器以及构造函数,但由于某种原因,我无法让我的代码正常工作。

我已经添加了我的驱动程序和我试图相互连接的前两个表单。

public class SimpsonsDriver {

    //@param args the command line arguments
    
        public static void main(String[] args) {
            // Todo code application logic here
            JFrame.setDefaultLookAndFeelDecorated(true);
            JFrame simpsonFrame = new JFrame("The Simpson");
            JFrame homerFrame = new JFrame ("Homer Simpson");
            JFrame margeFrame = new JFrame ("Marge Simpson");
            JFrame bartFrame = new JFrame ("Bart Simpson");
            JFrame lisaFrame = new JFrame("Lisa Simpson");
            JFrame maggieFrame = new JFrame("Maggie Simpson");
            SimpsonForm simpsonForm = new SimpsonForm(simpsonFrame,homerFrame,margeFrame,bartFrame,lisaFrame,maggieFrame);
            HomerForm homerForm = new HomerForm(homerFrame,simpsonFrame);
            MargeForm margeForm = new MargeForm(margeFrame,simpsonFrame);
            BartForm bartForm = new BartForm(bartFrame,simpsonFrame);
            LisaForm lisaForm = new LisaForm(lisaFrame,simpsonFrame);
            MaggieForm maggieForm = new MaggieForm(maggieFrame,simpsonFrame);
            
            
            
    }

}

public class SimpsonForm implements ActionListener{
    
    JFrame simpsonFrame,maggieFrame;//instance variables
    JButton homerBtn,margeBtn,bartBtn,lisaBtn,maggieBtn,closeBtn; //instance variables

    public SimpsonForm(JFrame simpsonFrame,JFrame homerFrame,JFrame margeFrame,JFrame bartFrame,JFrame lisaFrame,JFrame maggieFrame) {
        
        this.simpsonFrame = simpsonFrame;
        this.homerFrame = homerFrame;
        this.margeFrame = margeFrame;
        this.bartFrame = bartFrame;
        this.lisaFrame = lisaFrame;
        this.maggieFrame = maggieFrame;
        simpsonFrame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); 
    
        createPanel();
    }//end constructor method SimpsonForm

  
    private void createPanel(){
        
        homerBtn = new JButton ("Homer");
        margeBtn = new JButton ("Marge");
        bartBtn = new JButton ("Bart");
        lisaBtn = new JButton ("Lisa");
        maggieBtn = new JButton ("Maggie");
        closeBtn = new JButton ("Close");
        
        
        FlowLayout flow = new FlowLayout();
        JPanel p1 = new JPanel();
        p1.setLayout(flow);
        
        
        JPanel p2 = new JPanel();
        p2.setLayout(flow);
        
        ImageIcon img = new ImageIcon(this.getClass().getResource("simpsons.png"));
        
        JLabel imgLabel = new JLabel();
        
        imgLabel.setIcon(img);
        
        imgLabel.setBounds(10,10,img.getIconWidth(),img.getIconHeight());
        p1.add(imgLabel);
        
        p2.add(homerBtn);
        homerBtn.addActionListener(this);
        
        p2.add(margeBtn);
        margeBtn.addActionListener(this);
       
        p2.add(bartBtn);
        bartBtn.addActionListener(this);
       
        p2.add(lisaBtn);
        lisaBtn.addActionListener(this);
        
        p2.add(maggieBtn);
        maggieBtn.addActionListener(this);
       
        p2.add(closeBtn);
        closeBtn.addActionListener(this);
        
        
        simpsonFrame.setLayout(new BorderLayout());
        simpsonFrame.setResizable(false);
        simpsonFrame.add(p1,BorderLayout.BEFORE_FirsT_LINE);
        simpsonFrame.add(p2,BorderLayout.CENTER);
        simpsonFrame.setSize(425,425);
        simpsonFrame.setLocationRelativeto(null);
        simpsonFrame.setVisible(true);
        
    }//end method createPanel

    @Override
    public void actionPerformed(ActionEvent e) {
         
        if(e.getSource() == homerBtn) {
            homerFrame.setVisible(true);
            simpsonFrame.setVisible(false);
        }
        else if(e.getSource() == margeBtn) {
            margeFrame.setVisible(true);
            simpsonFrame.setVisible(false);
        }
        else if(e.getSource() == bartBtn) {
            bartFrame.setVisible(true);
            simpsonFrame.setVisible(false);
        }
        else if(e.getSource() == lisaBtn) {
            lisaFrame.setVisible(true);
            simpsonFrame.setVisible(false);
        }
        else if(e.getSource() == maggieBtn) {
            maggieFrame.setVisible(true);
            simpsonFrame.setVisible(false);
        }
        else if(e.getSource() == closeBtn) {
                System.exit(0);
        }//end if
        
    }//end event handler
   
   } 

public class HomerForm implements ActionListener{
    
    JFrame simpsonFrame,homerFrame;
    JButton closeBtn;

    public HomerForm(JFrame simpsonFrame,JFrame homerFrame ) {
        this.simpsonFrame = simpsonFrame;
        this.homerFrame = homerFrame;
        createPanel();
    }

    
    private void createPanel() {
       
        homerFrame = new JFrame("Homer Simpson");
        closeBtn = new JButton("Close");
        closeBtn.setSize(200,50);
        
        ImageIcon ogImage = new ImageIcon(this.getClass().getResource("/homer1.png"));
        JLabel ogLabel = new JLabel();
        ogLabel.setIcon(ogImage);  
        JPanel p1 = new JPanel();
        p1.add(ogLabel);
        ImageIcon hwImage = new ImageIcon(this.getClass().getResource("/homer2.png"));
        JLabel hwLabel = new JLabel();
        hwLabel.setIcon(hwImage);
        JPanel p2 = new JPanel();
        p2.add(hwLabel);
        ImageIcon cImage = new ImageIcon(this.getClass().getResource("/homer3.png"));
        JLabel cLabel = new JLabel();
        cLabel.setIcon(cImage);     
        JPanel p3 = new JPanel();
        p3.add(cLabel);
        JPanel p4 = new JPanel();  
        JTabbedPane tab = new JTabbedPane();
        tab.setBounds(100,100,300,300);
        tab.add("Original",p1);
        tab.add("HalfWay",p2);
        tab.add("Current",p3);
        tab.add("Close",p4);
        p4.add(closeBtn);
        closeBtn.setLayout(new BorderLayout());
        closeBtn.addActionListener(this);
        homerFrame.add(tab);
        homerFrame.setResizable(false);
        homerFrame.setSize(500,500);
        homerFrame.setLocationRelativeto(null);
        homerFrame.setVisible(false);
       
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        
          if(e.getSource() == closeBtn) {
                homerFrame.setVisible(false);
                simpsonFrame.setVisible(true);
               
        }//end if
        else
          {
              System.exit(0);
          }
    }
}

当我运行它时,我得到了这个图像。 simpsonsFrame 这是当我单击 Homer 按钮时发生的情况,然后我必须将其最大化才能看到空白屏幕。homerFrame。 当我将 homerFrame 设置为可见时,它会显示如果按下按钮会出现什么。它显示 homerFrame 然后它显示 simpsonF​​rame。homersetVisible true

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)