【问题标题】:Java Adding JScrollPane to JComponentJava将JScrollPane添加到JComponent
【发布时间】:2013-05-03 21:31:16
【问题描述】:

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

【问题讨论】:

    标签: java swing jscrollpane jcomponent


    【解决方案1】:
    1. JScrollPane覆盖getPreferredScrollableViewportSize

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

    3. 返回JPanelDimension 必须大于来自JViewportDimension(可见Rectangle 来自JScrollPane),否则JScrollBar(s) 不可见

    4. 为了尽快获得更好的帮助,请发布SSCCE,简短,可运行,可编译,JFrameJComponentJScrollPane

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-04
      • 2021-01-09
      • 2017-03-03
      • 1970-01-01
      • 2012-11-07
      • 2012-11-17
      • 2013-12-17
      • 2014-01-08
      相关资源
      最近更新 更多