繁体   English   中英

Java将JScrollPane添加到JComponent

[英]Java Adding JScrollPane to JComponent

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. 覆盖JScrollPane getPreferredScrollableViewportSize

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

  3. 返回JPanel Dimension必须大于JViewport Dimension (从JScrollPane可见的Rectangle ),否则将不显示JScrollBar

  4. 为了早日获得更好的帮助,请在JScrollPane带有JComponentSSCCE ,简短,可运行,可编译的JFrame

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM