[英]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.