gpt4 book ai didi

Java 将 JScrollPane 添加到 JComponent

转载 作者:行者123 更新时间:2023-11-30 04:23:17 26 4
gpt4 key购买 nike

Java:我有一个 JComponent 可以绘制可以重新缩放的图像。我需要有当图像变大时会出现的滚动条。我将 JComponent 传递给 JScrollPane,然后将 JScrollPane 添加到 JFrame 的北部分,但滚动条仅在调整 JFrame 大小时出现,而不是在重新缩放图像时出现。我还设置了 JComponent 的首选大小,但它不起作用。

我尝试先将 JComponent 添加到 JPanel,然后将 JPanel 传递到 JScrollPane,但这也不起作用。

这是 JFrame 构造函数中我的代码的一部分:

JComponent component = new JComponent() {
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(image1, zoom, this);
}
};

component.setPreferredSize(new Dimension(800, 600));
JScrollPane scroller = new JScrollPane(component);
add(scroller, BorderLayout.CENTER);

最佳答案

  1. 覆盖 JScrollPanegetPreferredScrollableViewportSize

  2. 覆盖 getPreferredSize 而不是 component.setPreferredSize(new Dimension(800, 600));

  3. 返回 JPanel
  4. Dimension 必须大于 JViewport 中的 Dimension(可见 来自 JScrollPane 的矩形),其他 JScrollBar 不可见

  5. 为了更快地获得更好的帮助,请发布 SSCCE ,简短,可运行,可编译,JFrameJComponent 位于 JScrollPane

  6. 添加 super.paintComponent(g); 作为第一个。 paintComponent 内的代码行,zoom_in/out 的坐标取自 getHeight/Weight(参见第 2 点。关于 getPreferredSize) >)

关于Java 将 JScrollPane 添加到 JComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16461229/

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