2017-05-10 23 views
0

小鬼如何从JButton的另一个类打开JFrame。目前我使用挂钩的动作监听

ort java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.sound.sampled.*; 
import java.util.Scanner; 
import java.io.*; 
import java.net.*; 


public class Menu extends JFrame implements ActionListener 

{ 

     private JButton btn = new JButton("start now"); 

     public Menu()throws Exception 
     { 
      JFrame os = new JFrame(); 
      os.add(btn); 
      btn.setPreferredSize(new Dimension(5, 10)); 

      btn.addActionListener(this); 

      os.setSize(822,547); 
      os.setBounds(550,300, 700,459); 
      os.setVisible(true); 
      os.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      Container cp = os.getContentPane();    
      JPanel endmessage = new JPanel(); 

      JLabel mes = new JLabel(); 
      mes.setIcon (new ImageIcon("backgroundMenu.png")); 

      cp.add(endmessage); 
      endmessage.add(mes); 
      os.setVisible(true); 

      } 


    public void actionPerformed(ActionEvent e)  
     { 
      if (e.getSource() == btn) 
      { 
      SpaceShipsGamePartThree myFrame = new SpaceShipsGamePartThree(); 
      myFrame.setVisible(true); 

      } 
      } 

     public static void main(String args[])throws Exception  
     { 
      Menu myFrame = new Menu(); 

      } 

    } 

// enter image description here我得到错误信息的按钮:未报告的除外;必须被捕获或宣布被抛出。这个班最初是为了一个菜单,所以它可以链接到游戏的主要部分。

+0

有人已经声明他们抛出异常,你必须抓住它,因为我假设你在'actionPerformed'方法中得到了这个,你不能改变方法签名, 'ActionListener'界面 – MadProgrammer

回答

1

由于SpaceShipsGamePartThree引发异常,您需要在那里处理它。因为您不能更改actionPerformed的方法签名,因为它是由ActionListener接口定义的,所以您需要捕获异常并自行处理。

@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == btn) { 
     try { 
      SpaceShipsGamePartThree myFrame = new SpaceShipsGamePartThree(); 
      myFrame.setVisible(true); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

虽然这只是将异常到控制台,我建议你考虑使用类似JOptionPane至少显示了某种错误信息给用户,以便他们不是在想,什么地方出了错

+0

thx它现在正在工作! – Riki

相关问题