2017-04-25 13 views
0

JPanelをバックギャモンのゲーム用に拡張するボードクラスを作成しようとしていますが、JLayeredPaneを使ってチェッカーのドラッグ領域を作成しようとしていますが、 。イメージは印刷されますが、JLabelは印刷されません。ここ は私のJPanelのクラスはJPanelのJLayeredPaneの内容が表示されない

public class BoardPanel extends JPanel{ 

private JLayeredPane lp; 

private BufferedImage imageBoard; 
private final int WIDTH = 1000; 
private final int HEIGHT = 800; 

private ArrayList<Slot> slotSet1; 
private ArrayList<Slot> slotSet2; 
private ArrayList<Slot> slotSet3; 
private ArrayList<Slot> slotSet4; 
private CheckerSet ch1; 
public Checker chc; 

public BoardPanel(){ 

    initComponents(); 

} 

private void initComponents(){ 

    lp = new JLayeredPane(); 

    setPreferredSize(new java.awt.Dimension(1500, 1000)); 

    //lp.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 
    lp.setBorder(javax.swing.BorderFactory.createTitledBorder("asdadsaddadsadasdadsa")); 
    lp.setMaximumSize(new java.awt.Dimension(1124, 904)); 
    lp.setMinimumSize(new java.awt.Dimension(1124, 904)); 


    try { 
     imageBoard = ImageIO.read(getClass().getResource("/images/board.jpg")); 
    } catch (IOException e) { 
     System.out.println("file error"); 
    } 

     JLabel label = new JLabel(); 
     label.setVerticalAlignment(JLabel.TOP); 
     label.setHorizontalAlignment(JLabel.CENTER); 
     label.setOpaque(true); 
     label.setBackground(Color.BLACK); 
     label.setForeground(Color.black); 
     label.setBorder(BorderFactory.createLineBorder(Color.black)); 
     label.setBounds(0, 0, 50, 50); 

    lp.add(label,JLayeredPane.DEFAULT_LAYER); 


} 
public void paintComponent(Graphics g){ 

    //g.drawImage(imageBoard,0,0,null); 

} 

}

され、メイン

public static void main(String[] args){ 

    JFrame f = new JFrame(); 

    //GamePanel gp = new GamePanel(); 
    BoardPanel gp = new BoardPanel(); 

    f.add(gp); 

    //f.getContentPane().add(gamePanel); 
    f.setSize(new Dimension(1500, 1000)); 
    f.setVisible(true); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

どのように私はそれを解決することができますがありますか?ありがとうございました

+0

あなたの 'JLayeredPane'は何にも追加されません。 – Berger

+0

ちょうど行の追加(lp)と私は何かを追加しました。私はlpのためのレイアウトを設定する必要があると思う、それは大丈夫です。ありがとう –

答えて

0

たとえば、GridLayoutのようにレイアウトをJLayeredPaneに追加する必要があります。試してみてください

GridLayout gl = new GridLayout(20, 21); 
lp.setLayout(gl); 

lpの初期化後です。そして、あなたは、インスタンスLPのために、あなたはGridLayoutのために必要なすべてのコンポーネントを追加することができます。

gl.add(lp) 

レイアウトは、物事がどのように表示されるかを管理します。この場合、GridLayoutからグリッドを塗りつぶします。まず、最初の行(そのうち20行が存在します)、次に2行目など(20行は実際には必要ではないと思います。例コード)

+0

私はあなたの答えを試みたが、まだ何も表示されません。編集:ちょうど追加(lp)をinitComponents()メソッドに追加しました。私はいくつかの結果を得ました。 –

+0

はい私の答えでtheGridLayoutに "lp"を明示的に追加するのを忘れてしまったので、それに応じて私の応答を編集します – Yato

+0

私は嬉しいです助け:)他のユーザーがあなたを助けたものを見ることができるようにこれを正しいものとしてマークしてもよろしいですか? – Yato

関連する問題