2014-01-28 3 views
1

다른 레이어의 패널을 분리하려하지만 작동하지 않습니다. 잘못된 작업을 수행하고 있습니까? 레이어를 관리하는 방법은 무엇입니까? table이 모두 뒤로 가고, panel이 중간에 있고 그 다음에 wkp이 맨 위에 있어야합니다. 미리 감사드립니다.내 레이어를 관리하는 방법은 무엇입니까?

public class Main { 
    private static JFrame frame = new MyFrame(); 
    private static WhiteKingPanel wkp = new WhiteKingPanel(); 
    private static MyPanel panel = new MyPanel(); 
    private static TablePanel table = new TablePanel(); 
    private static JLayeredPane lpane = new JLayeredPane(); 

public static void main(String[] args) throws InterruptedException{ 

    EventQueue.invokeLater(new Runnable(){ 
     public void run(){ 
      frame.setLayout(new BorderLayout()); 
       frame.add(lpane, BorderLayout.CENTER); 
       wkp.setOpaque(true); 
       wkp.setBounds(0, 0, 50, 50); 
       lpane.add(wkp, new Integer(3), 0); 
       lpane.add(panel, new Integer(2), 0); 
       lpane.add(table, new Integer(1), 0); 
       table.setOpaque(true); 
      frame.setTitle("ImageTest"); 
      frame.setBackground(Color.BLACK); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setBounds(150, 100, 512, 512); 
      frame.add(wkp); 
      frame.add(table); 
         frame.pack(); 
      frame.setVisible(true); 
      WindowListener listener = new Terminator(); 
      frame.addWindowListener(listener); 

     } 

    }); 

    } 


} 

답변

2

JLayerPane은 추가하는 모든 구성 요소에 대한 경계를 설정해야한다는 것입니다.

  wkp.setBounds(0, 0, 100, 100); 
      panel.setBounds(50, 50, 100, 100); 
      table.setBounds(100, 100, 100, 100); 

또한 컨텐츠 창

  frame.setContentPane(lpane); 
      //frame.add(wkp);    No need to add these to the frame 
      //frame.add(table); 
      //frame.add(lpane); 

enter image description here

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JLayeredPane; 
import javax.swing.JPanel; 

public class Main { 

    private static JFrame frame = new MyFrame(); 
    private static JPanel wkp = new JPanel(); 
    private static JPanel panel = new JPanel(); 
    private static JPanel table = new JPanel(); 
    private static JLayeredPane lpane = new JLayeredPane(); 

    public static void main(String[] args) throws InterruptedException { 

     EventQueue.invokeLater(new Runnable() { 
      public void run() { 

       wkp.setBackground(Color.YELLOW); 
       panel.setBackground(Color.GREEN); 
       table.setBackground(Color.BLUE); 

       frame.setLayout(new BorderLayout()); 
       frame.add(lpane, BorderLayout.CENTER); 
       wkp.setOpaque(true); 
       table.setOpaque(true); 
       panel.setOpaque(true); 
       lpane.add(wkp, new Integer(3), 0); 
       lpane.add(panel, new Integer(2), 0); 
       lpane.add(table, new Integer(1), 0); 
       wkp.setBounds(0, 0, 100, 100); 
       panel.setBounds(50, 50, 100, 100); 
       table.setBounds(100, 100, 100, 100); 
       frame.setTitle("ImageTest"); 
       frame.setBackground(Color.BLACK); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setContentPane(lpane); 
       //frame.add(wkp); 
       //frame.add(table); 
       //frame.add(lpane); 
       frame.pack(); 
       frame.setVisible(true); 

      } 
     }); 
    } 
} 
+0

좋아요, 감사가되도록 JLayerPane을 설정! –

관련 문제