2017-05-10 24 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

相關問題