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

누군가가 던져 버리고 예외가 있다고 선언 했으므로,'catch '해야합니다. 왜냐하면,'actionPerformed' 메소드에서 이것을 얻고 있다고 가정하기 때문에, 메소드 서명을 변경할 수 없습니다. 'ActionListener' 인터페이스 – MadProgrammer

답변

1

SpaceShipsGamePartThree이 예외를 던지고 있기 때문에 거기에서 처리해야합니다. ActionListener 인터페이스로 정의 되었기 때문에 actionPerformed의 메서드 서명을 변경할 수 없으므로 예외를 트랩하고 직접 처리해야합니다.

@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

이제는 작동 중입니다 !! – Riki

관련 문제