爪哇: 我有一个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);
答案 0 :(得分:2)
覆盖getPreferredScrollableViewportSize
JScrollPane
覆盖getPreferredSize
而不是component.setPreferredSize(new Dimension(800, 600));
Dimension
的 JPanel
必须大于Dimension
JViewport
(来自Rectangle
的可见JScrollPane
),其他JScrollBar
{1}}(s)不可见
为了更好地提供帮助,在JFrame
内发布SSCCE,简短,可运行,可编辑,JComponent
JScrollPane
将super.paintComponent(g);
添加为第1名。 paintComponent
内的代码行,从getHeight
/ Weight
获取zoom_in / out的坐标(请参阅第2点。关于getPreferredSize
)