簡體   English   中英

如何使用JButton從另一個類打開JFrame。 目前,我使用鏈接到動作監聽器的按鈕

[英]how can i open a JFrame from another class with a JButton . For the moment i use a button linked to action listener

小鬼

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();

          }

   }  

// 在此處輸入圖片描述,我收到消息錯誤:未報告的異常; 必須被抓住或宣布被拋出。 此類最初是為了菜單而設計的,因此可以將其鏈接到游戲的主要部分。

由於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的內容至少向用戶顯示某種錯誤消息,這樣他們就不會懷疑發生了什么問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM