Java将JScrollPane添加到JComponent

时间:2013-05-09 11:57:42

标签: java swing jscrollpane jcomponent

爪哇: 我有一个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 个答案:

答案 0 :(得分:2)

  1. 覆盖getPreferredScrollableViewportSize

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

  4. 返回Dimension
  5. JPanel必须大于Dimension JViewport(来自Rectangle的可见JScrollPane),其他JScrollBar {1}}(s)不可见

  6. 为了更好地提供帮助,在JFrame内发布SSCCE,简短,可运行,可编辑,JComponent JScrollPane

  7. super.paintComponent(g);添加为第1名。 paintComponent内的代码行,从getHeight / Weight获取zoom_in / out的坐标(请参阅第2点。关于getPreferredSize