2012-11-06 4 views
0

다음 코드는 있지만 JPanel은 표시되지 않습니다. 나는 이유를 알 수 없다. 왜 보이니? 내가 보는 모든 검은 배경과 JFrame의입니다jframe을 jframe에 추가 할 수 없습니다.

public class ShapeFrame extends JFrame 
{ 
    private JPanel outlinePanel; 

    public ShapeFrame(LinkedList<Coordinate> list) 
    { 
     super("Outline/Abstract Image"); 
     setSize(950, 500); 
     setLayout(null); 
     setBackground(Color.BLACK); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel outlinePanel = new JPanel(); 
     outlinePanel.setBackground(Color.WHITE); 
     outlinePanel.setBorder(null); 
     outlinePanel.setBounds(50, 50, 400, 400); 
     add(outlinePanel); 


//  abstractPanel = new JPanel(); 
//  abstractPanel.setBackground(Color.WHITE); 
//  abstractPanel.setBounds(500, 50, 400, 400); 
//  add(abstractPanel); 
    } 
+5

null 레이아웃을 사용하지 마십시오 – MadProgrammer

+3

@MadProgrammer에 동의합니다. null 레이아웃은 피해야하지만 현재 코드에는 오류가 표시되지 않습니다. 이 JFrame을 표시하면 JPanel이 추가되어 표시됩니다. 볼 수있는 유일한 다른 오류는 ShapeFrame 생성자에 대한 로컬 outlinePanel 변수가 otulinePanel 클래스 필드를 그림자로 남기는 것은 당연히 null입니다. 아마도 그것이 당신의 실수와 혼란의 근원입니다. –

+2

여기에 게시 한 코드를 실행하면 배경이 회색이고 내부에 흰색 사각형이있는 창이 나타납니다 ('outlinePanel'이라고 생각합니다.) [SSCCE (http://www.sscce.org)) –

답변

3

내가 할 모든이에 흰색 사각형 프레임입니다 ...

당신은 프레임의 다시 땅을 설정 getContentPane().setBackground()를 사용해야합니다

프레임은 레이어로 구성됩니다. 일반적으로 표시되는 내용은 프레임을 덮는 내용 창에 추가됩니다 (대부분의 경우 자동으로).

enter image description here

(자바 트레일에서 빌려온 사진)

그래서 프레임의 배경 설정은 아무런 영향이없는 것으로 "가 나타납니다."

enter image description here

getContent().setBackground(...)

enter image description here

를 사용

코드를 사용하여 ... 이것은 내가 당신의 코드를 테스트하는 데 사용되는 코드 ...입니다

public class BadLayout01 { 

    public static void main(String[] args) { 
     new BadLayout01(); 
    } 

    public BadLayout01() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       ShapeFrame shapeFrame = new ShapeFrame(); 
       shapeFrame.setSize(525, 525); 
       shapeFrame.setVisible(true); 

      } 
     }); 
    } 

    public class ShapeFrame extends JFrame { 

     private JPanel outlinePanel; 

     public ShapeFrame() { 
      super("Outline/Abstract Image"); 
      setSize(950, 500); 
      setLayout(null); 
      getContentPane().setBackground(Color.BLACK); 
//   setBackground(Color.BLACK); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

      JPanel outlinePanel = new JPanel(); 
      outlinePanel.setBackground(Color.WHITE); 
      outlinePanel.setBorder(null); 
      outlinePanel.setBounds(50, 50, 400, 400); 
      add(outlinePanel); 


//  abstractPanel = new JPanel(); 
//  abstractPanel.setBackground(Color.WHITE); 
//  abstractPanel.setBounds(500, 50, 400, 400); 
//  add(abstractPanel); 
     } 
    } 
} 
관련 문제