Добавление JScrollPane к существующей JPanel - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь добавить JScrollPane (createTeamScrollPane) в JPanel (createTeamPanel), который у меня есть.У меня есть фрейм с BorderLayout с частью NORTH, которая используется JPanel с именем tabMenu, а затем с частью CENTER. Мне бы хотелось, чтобы у моего createTeamPanel была эта возможность прокрутки, так как в нем будет больше контента, чем у меня уместится наэкран сразу.Затем я добавляю обе панели в рамку.В настоящее время код работает, но окно кажется пустым.Изменив размер окна, я вижу 3 кнопки в СЕВЕРНОЙ части моего кадра (почему это происходит?), И когда я нажимаю «Создать команду», появляется список JLabels и 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, но ее там нет.

1 Ответ

0 голосов
/ 31 декабря 2018

Исправлено: мне удалось добавить JScrollPane к главной панели с помощью:

mainPanel.add (createTeamScrollPane, BorderLayout.CENTER);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...