2016-10-21 3 views
0

私は基本的なものをやっている私は非常に新しいJavaです私の最終的なプロジェクトのために私たちはGUIのRPGを作成したい。私たちの問題は今、GUIボタンをクリックして別のプログラムを開く方法を理解できないということです。私の友人はあなたに食を使っているので、私は輸入品を見せる必要はないと言いました。そのあまりにも過酷判断してはいけない、私は高校にいるに注意してください:ここでDは、私たちのコードです:ここではforステートメントjavaで別のプログラムを開くには?

public class Narnia { 

    private static final String BACKHGROUND_IMAGE_URL = "http://randomwallpapers.net/fantasy-castle-1920x1080-wallpaper328374.jpg"; 

    protected void initUI() throws MalformedURLException { 
     JFrame frame = new JFrame(Narnia.class.getSimpleName()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     final ImageIcon backgroundImage = new ImageIcon(new URL(BACKHGROUND_IMAGE_URL)); 

     JLabel mainPanel = new JLabel(backgroundImage) { 
      @Override 
      public Dimension getPreferredSize() { 
       Dimension size = super.getPreferredSize(); 
       Dimension lmPrefSize = getLayout().preferredLayoutSize(this); 
       size.width = Math.max(size.width, lmPrefSize.width); 
       size.height = Math.max(size.height, lmPrefSize.height); 
       return size; 
      } 
     }; 

     mainPanel.setLayout(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.insets = new Insets(10, 10, 10, 10); 
     gbc.weightx = 1.0; 
     gbc.anchor = GridBagConstraints.WEST; 
     gbc.gridwidth = GridBagConstraints.REMAINDER; 
     for (int i = 0; i < 1; i++) { 
      mainPanel.add(new JButton("Play" + ("")), gbc); 
     } 
     for (int i = 0; i < 1; i++) { 
      mainPanel.add(new JButton("Credits " + ("")), gbc); 
     } 
     for (int i = 0; i < 1; i++) { 
      mainPanel.add(new JButton("Exit " + ("")), gbc); 
     } 

     // Let's put a filler bottom component that will push the rest to the top 
     gbc.weighty = 1.0; 
     mainPanel.add(Box.createGlue(), gbc); 
     frame.add(mainPanel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        new Narnia().initUI(); 
        } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 

することは、我々がオープンしたいクラスです:

public class chooseaclass { 

    private static final String BACKHGROUND_IMAGE_URL = "http://randomwallpapers.net/fantasy-castle-1920x1080-wallpaper328374.jpg"; 

    protected void initUI() throws MalformedURLException { 
     JFrame frame = new JFrame(chooseaclass.class.getSimpleName()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     final ImageIcon backgroundImage = new ImageIcon(new URL(BACKHGROUND_IMAGE_URL)); 

     JLabel mainPanel = new JLabel(backgroundImage) { 
      @Override 
      public Dimension getPreferredSize() { 
       Dimension size = super.getPreferredSize(); 
       Dimension lmPrefSize = getLayout().preferredLayoutSize(this); 
       size.width = Math.max(size.width, lmPrefSize.width); 
       size.height = Math.max(size.height, lmPrefSize.height); 
       return size; 
      } 
     }; 

     mainPanel.setLayout(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.insets = new Insets(40, 40, 40, 40); 
     gbc.weightx = 1.0; 
     gbc.anchor = GridBagConstraints.CENTER; 
     gbc.gridwidth = GridBagConstraints.REMAINDER; 
     for (int i = 0; i < 1; i++) { 
      mainPanel.add(new JButton("Archer" + ("")), gbc); 
     } 
     for (int i = 0; i < 1; i++) { 
      mainPanel.add(new JButton("Mage " + ("")), gbc); 
     } 
     for (int i = 0; i < 1; i++) { 
      mainPanel.add(new JButton("Knight " + ("")), gbc); 
     } 

     // Let's put a filler bottom component that will push the rest to the top 
     gbc.weighty = 1.0; 
     mainPanel.add(Box.createGlue(), gbc); 
     frame.add(mainPanel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        new chooseaclass().initUI(); 
        } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 
+0

dupe? http://stackoverflow.com/questions/13991007/execute-external-program-in-java –

+0

あなたのボタンは実際には何もしません、あなたは[アクションリスナー]について知っていますか(https:///docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html)? – Ash

+0

@marc Bあなたはどういう意味ですか? – Josh

答えて

1

あなたが追加する必要がありますリスナーから任意のボタンを選択します。この場合、ActionListenerを使用します。

のは、ちょうどあなたが既に持っている。この既存のラインを使用してみましょう: JButton playButton = new JButton("Play" + (""));

リスナーを追加するには、我々が必要:それは単純に、のは変数にそのJButtonを入れてみましょう作るために、すべてのmainPanel.add(new JButton("Play" + ("")), gbc);

ファーストをメソッドaddActionListener()を使用します。私はchooseaclassをインスタンス化actionPerformed()方法、内

JButton playButton = new JButton("Play" + ("")); 
    playButton.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent arg0) { 
      new chooseaclass.initUI() //insantiate a new chooseaclass instance 

     } 

    }); 
    mainPanel.add(playButton, gbc); 

:我々は、システムが舞台裏で呼び出すことができるメソッドを実装することができるように

今匿名クラスとしてActionListenerを追加します。そこから何でもできます。

私はこのコードをエディタなしでカフに書いたので、構文エラーが含まれる可能性があります。

+0

さらに、WindowBuilderプラグインを使用している場合は、 'addActionListener()'が自動的に追加されます。ビューアにボタンをドロップし、ドロップしたボタンをダブルクリックします。アクションリスナーが作成されたコードの場所にジャンプします –

関連する問題