繁体   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