Java 将JScrollPane添加到现有JPanel
我正在尝试将JScrollPane(createTeamScrollPane)添加到我拥有的JPanel(createTeamPanel)中。我有一个框架,有一个边界布局,北部部分由一个名为tabMenu的JPanel使用,然后中间部分我希望我的“createTeamPanel”具有这种滚动功能,因为它的内容将超过我一次可以在屏幕上显示的内容。然后我将两个面板添加到框架中。当前代码按原样运行,但窗口显示为空。一旦调整了窗口的大小,我就会在框架的北部看到3个按钮(为什么会出现这种情况?),当我单击“创建团队”时,它会显示我期望的JLabel和JButton列表,但我没有看到任何滚动条Java 将JScrollPane添加到现有JPanel,java,swing,user-interface,Java,Swing,User Interface,我正在尝试将JScrollPane(createTeamScrollPane)添加到我拥有的JPanel(createTeamPanel)中。我有一个框架,有一个边界布局,北部部分由一个名为tabMenu的JPanel使用,然后中间部分我希望我的“createTeamPanel”具有这种滚动功能,因为它的内容将超过我一次可以在屏幕上显示的内容。然后我将两个面板添加到框架中。当前代码按原样运行,但窗口显示为空。一旦调整了窗口的大小,我就会在框架的北部看到3个按钮(为什么会出现这种情况?),当我单击
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);
}
publicstaticvoidmain(字符串参数[]){
JFrame=新JFrame();
框架设置标题(“v0.01”);
框架设置尺寸(800800);
//frame.setLayout(空);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel=新的JPanel();
setLayout(新的BorderLayout());
JPanel tabMenu=新的JPanel();
JPanel createTeamPanel=新的JPanel();
setLayout(新的BoxLayout(createTeamPanel,BoxLayout.Y_轴));
createTeamPanel.setSize(800700);
setVisible(showCreateTeamPanel);
createTeamPanel.setBackground(颜色:灰色);
JScrollPane createTeamScrollPane=新的JScrollPane(createTeamPanel);
createTeamScrollPane.setBounds(50,50200500);
createTeamScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HorizontalScrollBar,根据需要);
createTeamScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL\u SCROLLBAR\u根据需要);
createTeamScrollPane.setPreferredSize(新维度(500500));
//添加(createTeamScrollPane);
List teamList=MockTeams.initTeam();
int xcoord=100;
int ycoord=50;
对于(玩家:团队列表){
JLabel label=新的JLabel(player.getName());
label.setBounds(xcoord、ycoord、Constants.buttonWidth、Constants.buttonHeight);
JButton addToTeamBtn=新JButton(“添加到团队”);
addToTeamBtn.setBounds(xcoord+100,ycoord,Constants.buttonWidth,Constants.buttonHeight);
addToTeamBtn.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
添加(玩家);
addToTeamBtn.setEnabled(假);
}
});
createTeamPanel.add(标签);
//createTeamFrame.add(标签);
createTeamPanel.add(addToTeamBtn);
//createTeamFrame.add(addToTeamBtn);
ycoord+=50;
}
JButton createTeamBtn=新JButton(“创建团队”);
createTeamBtn.setBounds(0,0150,20);
createTeamBtn.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
//隐藏/显示“创建团队”面板
如果(!showCreateTeamPanel){
showCreateTeamPanel=true;
setVisible(showCreateTeamPanel);
}否则{
showCreateTeamPanel=false;
setVisible(showCreateTeamPanel);
}
}
});
JButton manageTeamBtn=新JButton(“团队统计”);
manageTeamBtn.setBounds(100150150,40);
JButton resetBtn=新JButton(“重置季节”);
重置BTN.立根(100200150,40);
tabMenu.add(createTeamBtn);
tabMenu.add(manageTeamBtn);
tabMenu.add(resetBtn);
添加(选项卡菜单,BorderLayout.NORTH);
添加(createTeamPanel,BorderLayout.CENTER);
添加框架(主面板);
}
预期结果是在createTeamPanel上看到一个滚动功能,但它不在那里。修复:我能够通过以下方式将JScrollPane添加到主面板: 添加(createTeamScrollPane,BorderLayout.CENTER)