将JPanel添加到aN Applet的BorderLayout中

时间:2014-11-03 03:28:25

标签: java jpanel japplet border-layout

我在将此JPanel添加到窗格的Center块时遇到问题。本质上,这个主窗口是一个BorderLayout,它在Center中有centerPanel,而west和east块将是单独的BorderLayouts。我已经搜索了问题并查看了我的教授的示例代码,并在此处查看了stackoverflow,但我无法在代码中找到问题。

我在Eclipse中完成所有编码,因此我使用集成的AppletViewer。唯一出现的是一个空的灰色框,我希望看到包含JLabel和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);
}

1 个答案:

答案 0 :(得分:0)

由于您已取消布局管理器(centerPanel.setLayout(null);),BorderLayout不再知道面板的大小应该是多少(作为容器首选大小的值)由它的布局经理确定

考虑使用centerPanel上的布局管理器,有关详细信息,请参阅Laying Out Components Within a Container

避免使用null布局,像素完美布局是现代ui设计中的一种幻觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正

有关详细信息,请参阅Why is it frowned upon to use a null layout in SWING?

<强>更新...

致电时

pane.setLayout(borderLayoutMain);

borderLayoutMainnull,因此您现在在顶级容器中有null布局。

尝试使用...

pane.setLayout(new BorderLayout());

,而不是...