带“的可滚动JPanel”;卡片“;在java中使用it
我正在为我的学校项目开发一个java应用程序。我需要在容器中显示“卡片”列表。如果卡的数量超过3,则由于容器的大小,以下卡将不可见:有问题的卡列表: 所以我尝试使用JScrollPane,因为它似乎是解决方案。 但我没有成功地使面板可滚动。有什么想法吗带“的可滚动JPanel”;卡片“;在java中使用it,java,swing,jpanel,jscrollpane,Java,Swing,Jpanel,Jscrollpane,我正在为我的学校项目开发一个java应用程序。我需要在容器中显示“卡片”列表。如果卡的数量超过3,则由于容器的大小,以下卡将不可见:有问题的卡列表: 所以我尝试使用JScrollPane,因为它似乎是解决方案。 但我没有成功地使面板可滚动。有什么想法吗 import javax.swing.*; 导入java.awt.*; 导入java.awt.event.*; 导入java.util.*; 公共类FenetReprincipaleJFrame实现ActionListener、MouseLis
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.util.*;
公共类FenetReprincipaleJFrame实现ActionListener、MouseListener{
LinkedList CartesFadelite;//列出fidélités的点菜
JPanel公司;
摩根大通;
JScrollPane滚动窗格;
公共FenetrePrincipale(链接列表c){
cartesFidelite=c;//卡片列表
//窗口
setTitle(“点菜指南”);
立根(0,0,1195722);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
此参数为.setresizeable(false);
//集装箱干管
containerMain=newjpanel();
containerMain.setLayout(空);
集装箱箱底(颜色:白色);
//集装箱卡清单
contennerCarte=新JPanel();
contennerCarte.setLayout(空);
背景(新颜色(242242));
contennercote.setboorder(BorderFactory.createLineBorder(新颜色(199));
scrollPane=新的JScrollPane(contennerCarte);
滚动窗格.立根(34,90,377550);
containerMain.add(滚动窗格);
以下是显示卡片的方法:
公共无效刷新列表卡(){
contennerCarte.removeAll();
int i=0;
对于(Carte e:CartesFadelite){
e、 设定位置(15,(15+i*(172+15));
增加(e);
e、 addMouseListener(这个);
i++;
}
contennerCarte.updateUI();
}
感谢您的帮助:)不要使用空布局 Swing设计用于布局管理器 特别是,如果不使用布局管理器,JScrollPane将无法工作 另外,不要调用updateUI()。如果从面板添加/删除组件,则使用:
panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();
这将依次调用布局管理器
阅读关于的Swing教程,在课堂上我们学习使用空布局。我想继续使用它,有没有办法使面板可以滚动?然后你应该学习另一门课。正如我前面所说的,Swing设计用于布局管理器,所以你应该学习使用Swing的正确方法。你不需要这样做“忘却”一些东西。你写的任何代码实际上都是在写布局管理代码,所以为什么不利用现有的API而不是重新发明轮子呢。