Java 如何滚动我的JPanel
我正在用下面的代码创建一个银行活动列表。窗格是一个Java 如何滚动我的JPanel,java,swing,Java,Swing,我正在用下面的代码创建一个银行活动列表。窗格是一个JPanel,数组是一个ArrayList,分别包含金额和描述数据。设置是一个小图标,允许您修改每个动作 MouseClass是一个扩展MouseAdapter的类,我创建该类是为了向mouseClicked方法添加“k”索引。我是java gui编程新手。我想知道是否有一个快速的方法来添加一个滚动到我的面板 JLabel[] movement = new JLabel[array.size()]; JLabel[] descri
JPanel
,数组是一个ArrayList
,分别包含金额和描述数据。设置是一个小图标,允许您修改每个动作
MouseClass
是一个扩展MouseAdapter
的类,我创建该类是为了向mouseClicked方法添加“k”索引。我是java gui编程新手。我想知道是否有一个快速的方法来添加一个滚动到我的面板
JLabel[] movement = new JLabel[array.size()];
JLabel[] description = new JLabel[array.size()];
JLabel[] data = new JLabel[array.size()];
JLabel[] setting = new JLabel[array.size()];
System.out.println(array.size());
int i = 0;
for(int k=0; k<array.size(); k++){
movement[k] = new JLabel("");
movement[k].setForeground(SystemColor.text);
movement[k].setFont(new Font("Segoe UI", Font.PLAIN, 20));
movement[k].setBounds(17, i, 145, 30);
movement[k].setText(array.get(array.size() - k - 1).getAmount() + "€");
panel.add(movement[k]);
description[k] = new JLabel("");
description[k].setForeground(SystemColor.text);
description[k].setFont(new Font("Segoe UI", Font.PLAIN, 20));
description[k].setBounds(187, i, 274, 30);
description[k].setText(array.get(array.size() - k - 1).getDescription());
panel.add(description[k]);
data[k] = new JLabel("");
data[k].setForeground(SystemColor.text);
data[k].setFont(new Font("Segoe UI", Font.PLAIN, 20));
data[k].setBounds(478, i, 145, 30);
data[k].setText(array.get(array.size() - k - 1).getDate());
panel.add(data[k]);
setting[k] = new JLabel();
setting[k].setIcon(new ImageIcon(List.class.getResource("/it/andreavaiuso/financemanager/images/edit.png")));
setting[k].setForeground(SystemColor.text);
setting[k].setFont(new Font("Segoe UI", Font.PLAIN, 20));
setting[k].addMouseListener(new MouseClass(array.size() - k - 1) {
@Override
public void mouseClicked(MouseEvent arg0) {
Modify mdf = new Modify(this.index);
mdf.setVisible(true);
dispose();
}
});
setting[k].setBounds(640, i, 82, 30);
panel.add(setting[k]);
i += 40;
}
JLabel[]移动=新的JLabel[array.size()];
JLabel[]description=新的JLabel[array.size()];
JLabel[]数据=新的JLabel[array.size()];
JLabel[]设置=新的JLabel[array.size()];
System.out.println(array.size());
int i=0;
对于(int k=0;k
我试过使用JScrollPane,但不起作用
我看到很多代码带有setBounds(…)
,这意味着您使用的是空布局
不要使用空布局。Swing设计用于布局管理器。事实上,滚动窗格仅在与布局管理器一起使用时才起作用,因为滚动窗格需要知道面板的首选大小,以便确定何时使用滚动条
我还建议您也应该使用JTable
来实现类似的功能。它更高效,因为您不需要为每行数据创建单独的组件。阅读Swing教程中的部分以获取更多信息和示例。对于您需要的JScrollPane,1个JScrollPane,1个JList和一个DefaultListModel
首先将项目添加到DefaultListModel中,然后将模型添加到JList中,然后生成一个JSCrollPane,并将其作为参数传递给JList
例如:
DefaultListModel model = new DefaultListModel<String>();
JList list = new JList<String>();
model.addElemenet("1");
model.addElemenet("3");
model.addElemenet("2");
list.setModel(model);
JScrollPane scrollPane = new JScrollPane(list);
DefaultListModel=newDefaultListModel();
JList list=新JList();
模型。addElemenet(“1”);
模型。addElemenet(“3”);
模型。addElemenet(“2”);
list.setModel(model);
JScrollPane scrollPane=新的JScrollPane(列表);
Add JScrollPane。将JPanel添加到JScrollPane而不是JFrame。“我尝试了使用JScrollPane,但没有成功!”请将您的尝试添加到代码示例中