1

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);
4

1 回答 1

2
  1. 覆盖getPreferredScrollableViewportSizeJScrollPane

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

  3. Dimension返回值JPanel必须大于Dimensionfrom JViewport(visible Rectanglefrom JScrollPane),否则JScrollBar(s) 是/不可见的

  4. 为了尽快获得更好的帮助,请发布一个SSCCE,简短,可运行,可编译,JFrame带有JComponent内部JScrollPane

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

于 2013-05-09T12:04:44.940 回答