gpt4 book ai didi

java - 如何将 JPanel 一个接一个地添加到滚动条(或其他一些 Swing 容器)

转载 作者:行者123 更新时间:2023-12-01 20:26:59 27 4
gpt4 key购买 nike

我创建了下面的代码,以便我可以动态地将面板一个接一个地垂直添加到滚动 Pane 中。

每个面板上都应该绘制一些东西(基于从文件加载的数据点的图表,尽管为了简单起见,我更改了代码,使其看起来像是一个字符串)。

public void btnShow(Main aThis, ActionEvent evt) {
String cont = drv.load(fln.filePoints, true);//load file content
String d[] = cont.split(utf.splt[1]);//split using special symbol
for (int i = 1; i <= d.length - 1; i++) {
String fn = d[i] + pth.endPoints;//data split is a filename
String s = drv.load(fn, true);//load file content
// Paint string onto panel
class MyPanel extends JPanel {
public MyPanel() {
setBorder(BorderFactory.createLineBorder(Color.black));
}
DriveRouter drv = new DriveRouter();

@Override
public Dimension getPreferredSize() {
return new Dimension(100, 100);
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString(s, x, y);
}
}
//
JPanel pan = new MyPanel();
//Add panel to scrollpane
aThis.jScrollPane1.add(pan);
}
}

问题是,什么也没有显示。

我应该如何将这些面板一个接一个地垂直添加到我的容器中(我为这种情况选择了 jScrollPane)。

理想情况下,最终产品应该看起来像一个可滚动的文本列表(因为每个面板上都画有一个字符串)。当然,在我的实际代码中,这将是一个可滚动的绘制图表列表,每个图表都是一个单独的 JPanel。

请帮忙!

注意:我尝试用 jTabbedPane 替换滚动 Pane ,并且第一次被绘制,并且为每个 Pane 创建了选项卡。不幸的是,无论出于何种原因,当我切换标签时,什么也没有显示。

最佳答案

您不应该将内容添加到 JScrollPane 本身,而应该添加到其视口(viewport) - 检查 JScrollPane tutorial这将解释为什么会这样。

此外,如果您要动态添加内容,则需要在添加或删除容器后调用 revalidate()repaint(),以便添加组件被布置并重新粉刷。

此外,如果您要向 JScrollPane 添加多个 JPanel,那么您应该首先向视口(viewport)添加一个“主”JPanel,为其提供一个合适的布局管理器,然后动态地将新的 JPanel 添加到该 JPanel,再次重新验证并重新粉刷。

如果您需要更全面的答案,请创建并发布您的MCVE .

关于java - 如何将 JPanel 一个接一个地添加到滚动条(或其他一些 Swing 容器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com