2014-11-03 4 views
0

이 JPanel을 창 가운데 블록에 추가하는 데 문제가 있습니다. 본질적으로이 메인 윈도우는 centerPanel을 중심으로하는 BorderLayout이며, west와 east 블록은 별도의 BorderLayouts입니다. 그 문제를 봤 거든 내 교수와 여기에 stackoverflow에 예제 코드를 통해 보았다,하지만 내 코드에서 문제를 찾을 수 없습니다.JApplet의 테두리 레이아웃에 JPanel 추가

Eclipse에서 코딩을 모두 수행하므로 통합 된 AppletViewer를 사용합니다. 유일한 방법은 JLabels 및 JTextAreas가 포함 된 centerPanel을 볼 빈 회색 상자입니다.

import java.awt.*; 
import java.awt.event.*; 

import javax.swing.*; 

public class Lab7 extends JApplet implements ItemListener, ActionListener{ 

//variables 
private JLabel currentOrder, total; 
private JTextArea descTop, currentOrderTA, totalTA; 
private JRadioButton sizeSmall, sizeMedium, sizeLarge, typeDeep, typePan, typeHand; 
private JCheckBox pepperoni, bacon, extra_cheese, mushroom, pepper, sausage, tomato, olive; 
private JButton orderButton, resetButton; 
private ButtonGroup sizeBG, typeBG; 
private BorderLayout borderLayoutMain, borderLayoutWest, borderLayoutEast; 
private JPanel westPanel, centerPanel, eastPanel; 

public void init(){  
    Container pane = getContentPane(); 
    pane.setLayout(borderLayoutMain); 

    //borderLayoutMain centerPanel 
    centerPanel = new JPanel(); 
    centerPanel.setLayout(null); 

    currentOrder.setSize(200, 25); 
    currentOrder.setLocation(100, 25); 
    currentOrderTA.setSize(600, 400); 
    currentOrderTA.setLocation(100, 50); 
    currentOrderTA.setEditable(false); 
    total.setSize(200, 25); 
    totalTA.setLocation(100, 450); 
    totalTA.setEditable(false); 
    orderButton.setSize(100, 50); 
    orderButton.setLocation(100, 500); 
    resetButton.setSize(100, 50); 
    resetButton.setLocation(400, 500); 

    centerPanel.add(currentOrder); 
    centerPanel.add(currentOrderTA); 
    centerPanel.add(total); 
    centerPanel.add(totalTA); 
    centerPanel.add(orderButton); 
    centerPanel.add(resetButton); 

    pane.add(centerPanel, BorderLayout.CENTER); 
} 

답변

0

컨테이너의 추천 사이즈의 값은 그것의에 의해 확인되는대로 떨어져 BorderLayout이 더 이상 패널의 크기가되어야합니다 어떤 생각을 (이 레이아웃 매니저 (centerPanel.setLayout(null);)을 수행 한 이후 레이아웃 관리자)

자세한 내용은 centerPanel의 레이아웃 관리자 사용을 고려하십시오. 자세한 내용은 Laying Out Components Within a Container을 참조하십시오.

null 레이아웃을 사용하지 마십시오. 픽셀 완벽한 레이아웃은 현대적인 UI 디자인 내 환상입니다. 구성 요소의 개별 크기에 영향을주는 요소가 너무 많습니다. 어느 요소도 제어 할 수없는 요소가 너무 많습니다. 스윙은

더 자세한 업데이트

에 대한 Why is it frowned upon to use a null layout in SWING?를 참조 수습하려고 당신이 더 많은 시간을 보낼 것입니다 문제와 문제의 끝이 이어질 것이 폐기, 핵심 레이아웃 매니저와 함께 작동하도록 설계되었습니다. ..

당신이 지금을 가지고 있도록,

pane.setLayout(borderLayoutMain); 

borderLayoutMain

null입니다 전화 최상위 컨테이너에레이아웃.

사용해보십시오 ... 대신

pane.setLayout(new BorderLayout()); 

...

+0

나는에 레이아웃 라인을 변경했습니다 : centerPanel.setLayout (새 GridLayout과 (5, 3)); 그리고 setSize 및 setLocation 행을 주석 처리했습니다. 아직 JApplet에 아무것도 표시되지 않습니다. 다른 것을 추가해야합니까? – prograded

+0

업데이트 확인 ... – MadProgrammer

+0

add (pane); java.lang.IllegalArgumentException : 컨테이너의 부모를 자체에 추가하는 중 – prograded