繁体   English   中英

将 JScrollPane 添加到现有 JPanel

[英]Adding a JScrollPane to an existing JPanel

我正在尝试将 JScrollPane (createTeamScrollPane) 添加到我拥有的 JPanel (createTeamPanel)。 我有一个框架,其中有一个 BorderLayout,其中的 NORTH 部分被称为 tabMenu 的 JPanel 使用,然后是 CENTER 部分,我希望我的“createTeamPanel”具有这种滚动能力,因为它的内容比我能适应的要多立即屏幕。 然后我将两个面板都添加到框架中。 当前代码按原样运行,但窗口显示为空白。 调整窗口大小后,我会在框架的 NORTH 部分看到 3 个按钮(为什么会发生这种情况?),当我单击“创建团队”时,它会显示我期望的 JLabel 和 JButton 列表,但我没有看到任何滚动条吗?

public static void main (String args[]) {

    JFrame frame = new JFrame();
    frame.setTitle("v0.01");
    frame.setSize(800, 800);
    //frame.setLayout(null);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new BorderLayout());

    JPanel tabMenu = new JPanel();

    JPanel createTeamPanel = new JPanel();
    createTeamPanel.setLayout(new BoxLayout(createTeamPanel, BoxLayout.Y_AXIS));
    createTeamPanel.setSize(800, 700);
    createTeamPanel.setVisible(showCreateTeamPanel);
    createTeamPanel.setBackground(Color.gray);

    JScrollPane createTeamScrollPane = new JScrollPane(createTeamPanel);
    createTeamScrollPane.setBounds(50, 50, 200, 500);
    createTeamScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    createTeamScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    createTeamScrollPane.setPreferredSize(new Dimension(500,500));
    //createTeamPanel.add(createTeamScrollPane);

    List<Player> teamList = MockTeams.initTeam();

    int xcoord = 100;
    int ycoord = 50;

    for(Player player : teamList) {
        JLabel label = new JLabel(player.getName());
        label.setBounds(xcoord, ycoord, Constants.buttonWidth, Constants.buttonHeight);

        JButton addToTeamBtn = new JButton("Add to team");
        addToTeamBtn.setBounds(xcoord + 100, ycoord, Constants.buttonWidth, Constants.buttonHeight);
        addToTeamBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                myTeam.add(player);
                addToTeamBtn.setEnabled(false);
            }
        });

        createTeamPanel.add(label);
        //createTeamFrame.add(label);
        createTeamPanel.add(addToTeamBtn);
        //createTeamFrame.add(addToTeamBtn);

        ycoord += 50;
    }

    JButton createTeamBtn = new JButton("Create Team");
    createTeamBtn.setBounds(0,0,150,20);
    createTeamBtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            //Hide/Show Create team panel
            if (!showCreateTeamPanel) {
                showCreateTeamPanel = true;
                createTeamPanel.setVisible(showCreateTeamPanel);
            } else {
                showCreateTeamPanel = false;
                createTeamPanel.setVisible(showCreateTeamPanel);
            }

        }
    });

    JButton manageTeamBtn = new JButton("Team Statistics");
    manageTeamBtn.setBounds(100,150,150,40);

    JButton resetBtn = new JButton("Reset Season");
    resetBtn.setBounds(100,200,150,40);

    tabMenu.add(createTeamBtn);
    tabMenu.add(manageTeamBtn);
    tabMenu.add(resetBtn);

    mainPanel.add(tabMenu, BorderLayout.NORTH);
    mainPanel.add(createTeamPanel, BorderLayout.CENTER);

    frame.add(mainPanel);

}

预期结果是在 createTeamPanel 上看到滚动功能,但它不存在。

修正:我能够将 JScrollPane 添加到 mainPanel 中:

mainPanel.add(createTeamScrollPane, BorderLayout.CENTER);

暂无
暂无

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

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