繁体   English   中英

如何在CardLayout面板中将组件放在中心

[英]how to put components in the center in a CardLayout panel

我有一个包含几个面板的框架,它们由CardLayout更改。 在每个面板内,我将具有不同的组件。 为了设计面板的GUI,我使用了GridBagLayout。 但是问题是我用于这些面板的任何组件或布局,它们都位于页面顶部。 因此,基本上CardLayout的面板大小只是框架的一小部分。 我想使子面板的尺寸与主CardLayout的尺寸一样大。

主CardLayout的代码:

public class MainPanel extends JPanel {
    private CardLayout cl = new CardLayout();
    private JPanel panelHolder = new JPanel(cl);

    public MainPanel() {
        NewSession session = new NewSession(this);
        ChooseSource chooseSource = new ChooseSource(this);

        panelHolder.add(session, "1");
        panelHolder.add(chooseSource, "2");

        cl.show(panelHolder, "dan");
        add(panelHolder);
    }
    public void showPanel(String panelIdentifier){
        cl.show(panelHolder, panelIdentifier);
    }
}

子面板:

public class ChooseSource extends JPanel {
    MainPanel ob2;
    JButton btn;
    JLabel label;
    JTextField field;

    public ChooseSource(MainPanel mainPanel){
        this.ob2 = mainPanel;


        btn = new JButton("Browse");
        label = new JLabel("Folder ");
        field = new JTextField();

        btn.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e){
                ob2.showPanel("1");

            }
        });


        GridBagLayout layout = new GridBagLayout();
        setLayout(layout);

        GridBagConstraints c = new GridBagConstraints();

        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 0;
        c.ipady = 20;
        c.gridheight = 2;
        add(btn, c);

        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 0;
        c.ipady = 10;
        c.gridheight = 1;
        c.insets = new Insets(0,10,0,0); 
        add(label, c);

        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 1;
        c.ipady = 0;
        c.gridheight = 1;
        c.insets = new Insets(0,10,0,0); 
        add(field, c);
    }
}

左图显示了它的效果,右图是我要制作的图。 基本上,我想访问面板的所有可用空间。

任何想法?

在此处输入图片说明

MainPanel的布局管理器更改为BorderLayoutGridBagLayout东西

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM