簡體   English   中英

更改卡片布局中面板的背景和大小

[英]Change Background and size of panels in card layout

我在卡布局容器中有一些面板(不知道這是否是正確的術語)。 我找不到設置容器內這些面板的位置或大小的方法。 我嘗試了setBounds和setLayout(null),但仍然無法更改任何內容。 這些是我的字段和構造函數。 我的框架已經可以使用了,我可以看到並使用按鈕來更換卡,但是我真的不能對卡進行太多更改。 我將兩個卡面板設置為兩個具有不同的背景,但是它們僅使按鈕周圍帶有一小塊顏色,並將其放置在屏幕中央。

我也不明白為什么這不能正確粘貼我的代碼。

public class TestPanel extends JPanel implements ActionListener {

CardLayout cl = new CardLayout();

private JPanel panelCont = new JPanel();

private JPanel panel1 = new JPanel();

private JPanel panel2 = new JPanel();

private static JButton but1 = new JButton("Change panels");

private static JButton but2 = new JButton("Change back");

public TestPanel() {

    panelCont.setLayout(cl);
    panel1.add(but1);
    panel2.add(but2);
    panel1.setBackground(Color.black);
    panel2.setBackground(Color.blue);
    panelCont.add(panel1, "1");
    panelCont.add(panel2, "2");
    cl.show(panelCont, "1");
    but1.addActionListener(this);
    but2.addActionListener(this);
    add(panelCont);
}
}

謝謝。 我事先表示歉意。 我發現很難理解卡的布局。

CardLayout遵循添加到布局中的面板的首選大小。 也就是說,大小將是添加到布局中的最大面板的大小。

我將兩個卡面板設置為兩個具有不同的背景,但是它們僅使按鈕周圍帶有一小塊顏色,並將其放置在屏幕中央。

面板的默認布局是FlowLayout。 默認情況下,FlowLayout在每個組件周圍有5像素的水平/垂直間隙。 因此,面板的首選大小是按鈕的大小加上5個像素的間距。

面板顯示正確。 當您將其他組件添加到面板時,大小將根據需要更改。

目前尚不清楚您在哪里pack()封閉的Window 默認情況下, pack()會使具有CardLayout的面板采用最大面板的首選大小,該大小由其內容的大小決定。 這個例子使用setPreferredSize()指定任意大小,但是你可以重寫getPreferredSize()如圖所示這里

圖片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM