2016-05-02 8 views
0

は、だから私はこれに新たなんだと私は作成するために、適切にグラフィックを...私は「できる描画方法が示されてきたことが、今、このウェブサイトに多くのおかげで学習されているメインクラスへのJPanelを介して送信する方法私が作成したJPanelを別のクラスに表示しません。 私はにdrawStringのように、別のクラスから引き出すことができますが、私は私のBorderLayout.NORTHでJPanelの上にあるJButtonがを持っていると思います。私はBorderLayout.CENTERである私のメインゲームに描画したかっただけです。 私はどのようにかかわらず、非常にわかりません。わからない

これはメインのクラスです。

//Imports 
    import javax.swing.*; 
    import javax.swing.event.*; 
    import java.awt.event.*; 
    import java.awt.*; 
    import java.awt.image.*; 

    //This is the main game it self; where the foundations of all actions will occur. 
    public class RPGClicker 
    { 
    public static void main(String[] args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
    //Calls the mainGameScene method. 
       mainGameScene(); 
      } 
     }); 
    } 

    //This builds the inital game it self.   
    private static void mainGameScene() 
    { 
     JFrame window; 
     mainGamePanel mainGameInstance; 
     statusPanel statusInstance; 
     playerInfoPanel playerInfoInstance; 
     navBarDisplayPanel navBarDisplayInstance; 

     window = new JFrame("RPGClicker: An Unknown Quest!"); 
     window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     window.setLayout(new BorderLayout()); 

     mainGameInstance = new mainGamePanel(); 
     statusInstance = new statusPanel(); 
     playerInfoInstance = new playerInfoPanel(); 
     navBarDisplayInstance = new navBarDisplayPanel(); 

    //Adding each of the panels to their allocated spots in the window. 
     window.add(mainGameInstance, BorderLayout.CENTER); 
     window.add(statusInstance, BorderLayout.SOUTH); 
     window.add(playerInfoInstance, BorderLayout.EAST); 
     window.add(navBarDisplayInstance, BorderLayout.NORTH); 

     window.pack(); 
     window.setLocationRelativeTo(null); 
     window.setVisible(true); 
    } 
    } 

残りは小さくなります。 だから私は今、偉大である私のmainGamePanelに描くことができます! しかし、今、私は私の他のパネルに描画することができます。私はそれらにテキストフィールドとJButtonを含めることを望んだ。

//Imports 
    import javax.swing.*; 
    import javax.swing.event.*; 
    import java.awt.event.*; 
    import java.awt.*; 
    import java.awt.image.*; 

    //This allows the creation of instances for the navBarDisplayInstance. 
    class navBarDisplayPanel extends JPanel 
    { 
    JButton yourStory; 

    public Dimension getPreferredSize() 
    { 
     return new Dimension(1280, 256); 
    } 

    //This allows the drawing of graphics. 
    private void navBarDisplayPanel() 
    { 
     yourStory = new JButton("Your Story"); 

     add(yourStory); 
    } 
    } 

コードはコンパイルが、私はそれを実行したときに、私は何も表示されない、北のバーが完全に空です。誰もがアイデアを与えることができますか?

答えて

1

私はこれを想定しています:

private void navBarDisplayPanel() 

はあなたのクラスnavBarDisplayPanelのコンストラクタが本当に何を考えています。

外部クラスからオブジェクトを作成する場合は、コンストラクタとしてこのオブジェクトをプライベートにしないでください。通常の方法ではないので、voidというマークを削除する必要があります(オプションですがオプションではありません)。最初の文字を大文字にして、すべてのクラス(およびそれらのコンストラクタ)に名前を付けます。 (

public navBarDisplayPanel(){ 
    yourStory = new JButton("Your Story"); 
    add(yourStory); 
} 

しかし、私はそれを指摘して、Java Naming Conventionsに従うことを試してみてください。これに

private void navBarDisplayPanel(){ 
    yourStory = new JButton("Your Story"); 
    add(yourStory); 
} 

:あなたのコードの作業を行うために、私はあなただけでこの名前を変更する必要が

を推測します他の慣習も)、将来の間違いを避けるためです。

関連する問題