首先,我已經通過this相關的問題,但不能得到它的工作。如何在JFrame中「打包」JPanel?
現在,我的問題: 我有一個JFrame,內部包含一個JPanel,它是動態繪製的。現在,當我畫這個面板時,它佔據了整個屏幕,並擴展到邊緣。我在面板上使用了BoxLayout.Y_AXIS。
如何麪包車我做到這一點?
我已附上截圖:
我得到了什麼:
我想要什麼:
編輯:添加源代碼(最小化,而不是實際的)
public class DialogReportsMain extends JDialog implements ActionListener
{
public DialogReportsMain(JFrame mParent, boolean isModal)
{
/*******************************************/
setLayout(new BorderLayout(0, 0));
/***************************************/
addNorthContent(this);
addWestContent(this);
addSouthContent(this);
/***************************************/
JPanel mOrderHeaderContainer = new JPanel();
mOrderHeaderContainer.setLayout(new BoxLayout(mOrderHeaderContainer, BoxLayout.Y_AXIS));
/***************************************/
// Table Number
JLabel mLabelTableNumber = new JLabel("Table: "
+ new Integer(mOrderDetails.mTableNumber).toString());
mOrderHeaderContainer.add(mLabelTableNumber);
/***************************************/
// Dates
JPanel mPanelDates = new JPanel();
mPanelDates.setLayout(new GridLayout(1, 2, 20, 0));
JLabel mLabelReceivedDateTime = new JLabel(mOrderDetails.mReceivedDateTime);
mPanelDates.add(mLabelReceivedDateTime);
JLabel mLabelBillDateTime = new JLabel(mOrderDetails.mBillDateTime);
mPanelDates.add(mLabelBillDateTime);
mOrderHeaderContainer.add(mPanelDates);
/***************************************/
// Waiter Details
JLabel mLabelWaiterDetails = new JLabel("Waiter: "
+ new Integer(mOrderDetails.mWaiterId).toString()
+ " ("
+ mOrderDetails.mWaiterName
+ ")"
);
mOrderHeaderContainer.add(mLabelWaiterDetails);
/***************************************/
// Blank Lines
mOrderHeaderContainer.add(new JLabel());
mOrderHeaderContainer.add(new JLabel());
/***************************************/
add(mOrderHeaderContainer, BorderLayout.CENTER);
/*******************************************/
setTitle("Reports");
setModalityType(ModalityType.MODELESS);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setResizable(true);
setMinimumSize(new Dimension(100, 400));
makeDialogFullScreen(this);
setLocationRelativeTo(null);
}
}
你可以叫包()實現上將JFrame打包成最適合的窗口。 – mino 2012-04-18 11:11:01
@mino:我打算「打包」的面板容器也是一個面板,並且嵌套在很大程度上。那麼,在這種情況下你的建議會起作用嗎? – 2012-04-18 11:13:21
我相信,如果你在實際的JFrame上調用pack並且在你的JPanel上沒有設置大小約束,它應該可以工作。 – mino 2012-04-18 11:18:44