2015-01-11 2 views
0

학교용 작업이 있는데 아직 Java가 좋지 않습니다 ... 테두리가있는 프레임을 만들고 있는데 여기에는 스왑을 포함하여 여러 개의 패널이 있습니다. 보이지 않는 곳에서 보이는 곳으로 그리고 그 반대편에서. 어떤 이유로 프로그램을 실행할 때 아무 것도 표시되지 않습니다.JFrame에서 LayoutManager를 사용하여 패널을 표시하지 않습니다.

화면 : http://prntscr.com/5r2s6s

public class QuizIT extends JFrame { 
    public static JFrame Frame; 
    public static Welkom Welkom; 
    public static Vraag1 Vraag1; 
    public static Vraag2 Vraag2; 
    public static Vraag3 Vraag3; 
    public static Vraag4 Vraag4; 
    public static Vraag5 Vraag5; 
    public static Vraag6 Vraag6; 
    public static Punten Punten; 
    public static Uitleg Uitleg; 


public static void main(String[] args){ 

    // Frame Eigenschappen 
    Frame = new JFrame(); 
    Frame.setSize(500, 500); 
    Frame.setLocation(0, 0); 
    Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Frame.setTitle("QuizIT | Naesen Technologies"); 
    Frame.setVisible(true); 

} 

public QuizIT(){ 
    // Layout -> BorderLayout 
    setLayout(new BorderLayout()); 

    // Initialiseren Klassen 
    Welkom = new Welkom(); 
    Uitleg = new Uitleg(); 
    Vraag1 = new Vraag1(); 
    Vraag2 = new Vraag2(); 
    Vraag3 = new Vraag3(); 
    Vraag4 = new Vraag4(); 
    Vraag5 = new Vraag5(); 
    Vraag6 = new Vraag6(); 
    Punten = new Punten(); 

    // Panel -> Frame 
    Frame.add(Welkom, BorderLayout.CENTER); 
    Frame.add(Uitleg, BorderLayout.NORTH); 
    Frame.add(Vraag1, BorderLayout.CENTER); 
    Frame.add(Vraag2, BorderLayout.CENTER); 
    Frame.add(Vraag3, BorderLayout.CENTER); 
    Frame.add(Vraag4, BorderLayout.CENTER); 
    Frame.add(Vraag5, BorderLayout.CENTER); 
    Frame.add(Vraag6, BorderLayout.CENTER);   
    Frame.add(Punten, BorderLayout.SOUTH); 

    // Layout -> Bounds 
    Uitleg.setBounds(0,0,500,100); 
    Welkom.setBounds(0,100,500,300); 
    Vraag1.setBounds(0,100,500,300); 
    Vraag2.setBounds(0,100,500,300); 
    Vraag3.setBounds(0,100,500,300); 
    Vraag4.setBounds(0,100,500,300); 
    Vraag5.setBounds(0,100,500,300); 
    Vraag6.setBounds(0,100,500,300); 
    Punten.setBounds(0,400,500,100); 

    Uitleg.setBackground(Color.YELLOW); 
    Welkom.setBackground(Color.YELLOW); 

    // Visibility 
    Welkom.setVisible(true); 
    Uitleg.setVisible(true); 
    Vraag1.setVisible(false); 
    Vraag2.setVisible(false); 
    Vraag3.setVisible(false); 
    Vraag4.setVisible(false); 
    Vraag5.setVisible(false); 
    Vraag6.setVisible(false); 
    Punten.setVisible(true); 
} 
} 
+0

1)이 [MCVE (http://stackoverflow.com/help/mcve) (최소 완전하고 검증을 게시 예) 또는 [SSCCE] (http://www.sscce.org/) (단락, 자체 포함, 올바른 예). 2)'Frame.add (Vraag4, BorderLayout.CENTER); Frame.add (Vraag5, BorderLayout.CENTER);'BorderLayout에서 단일 레이아웃 제약 조건에 최대 하나의 구성 요소를 추가 할 수 있습니다. .. –

+0

.. 3)'Uitleg.setBounds (0,0,500,100);'Java GUI는 다른 OS, 화면 크기, 화면 해상도 등에서 작동해야합니다. 따라서 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). 4) 일반적인 Java 명명법을 배우십시오 (예 :'EachWordUpperCaseClass','firstWordLowerCaseMethod()','firstWordLowerCaseAttribute'가'CONSTANT'가 아닌 한). 일관되게 사용하십시오. .. –

+0

.. 5) ASCII 아트 또는 최소한의 크기로 GUI 레이아웃의 간단한 그림을 제공하고 크기를 조정할 수 있으면 더 많은 너비와 높이를 제공하십시오. –

답변

1

그것은 프로그램이 시작될 때 생성자가 먼저 호출되고 있다는 것을 수 있습니다. 그 후 주요 방법. 그 이유는 단지 창을로드하지만 구성 요소는로드하지 않는 이유 일 수 있습니다.

메서드 instad로 생성자를 바꾸고 main 메서드의 마지막 줄에서 메서드를 호출 해보십시오.

이 코드는 정상적으로 작동합니다. 메서드에서 코드에 쓴 내용을 바꿉니다.

public static void main(String[] args){ 

// Frame Eigenschappen 
Frame = new JFrame(); 
Frame.setSize(500, 500); 
Frame.setLocation(0, 0); 
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
Frame.setTitle("QuizIT | Naesen Technologies"); 
Frame.setVisible(true); 
methodQuizIT(); 

더 빨리 도움 용}

public static void methodQuizIT(){ 
NOW THIS CODE EXECUTES :) 
}}

+0

고맙습니다. 나는 당신이 그것을 게시하기 전에 잠시 그것을 풀었다. 똑같은 방법 : p 시간 내 주셔서 감사합니다. –

+0

하하하 오케이 좋은 사람, 괜찮아! – Johan

관련 문제