【问题标题】:How to display the whole contents of a large JPanel in a small JFrame?如何在小 JFrame 中显示大 JPanel 的全部内容?
【发布时间】:2014-09-21 13:47:34
【问题描述】:

我有一个大小为 816 x 1056 像素(标准打字纸大小)的JPanel。有没有办法在一个小的JFrame 中显示整个JPanel 及其内容而不改变其实际大小?有没有办法把它缩小?

【问题讨论】:

  • 这个 JPanel 是否会包含 JButtons、JLabels、JTextComponents 等必须缩小的组件?如果是这样,用户是否仍然可以使用它们?
  • 不,先生。它只包含一个JLabel,这是它的背景图片。将此面板想象成打印预览。
  • JPanel zoom out的可能重复

标签: java swing jframe jpanel


【解决方案1】:

我想不出一个简单的方法来缩小JPanel,但你可以通过双缓冲来做到这一点:

private void paintPanel (Graphics2D g)
{
    // here goes the code of your paint() or paintComponent() method
}

/** Draw content into an Image, shrink it, and display it. */
protected void paintComponent (Graphics g)
{
    // paint image
    BufferedImage img = new BufferedImage(MAX_WIDTH, MAX_HEIGHT, BufferedImage.TYPE_INT_ARGB);
    paintPanel(img.createGraphics());

    // shrink image and paint it
    g.drawImage(img, 0,0, WIDTH,HEIGHT, 0,0, MAX_WIDTH,MAX_HEIGHT, null);
}

这将在BufferedImage 上绘制大小为MAX_WIDTH x MAX_HEIGHT 的所有内容。然后,Image会被缩小成WIDTH x HEIGHT的大小,然后显示出来。

【讨论】:

  • 我想对此进行投票,但关键部分,标记为/* do something */ 的部分丢失了。
  • 这是旧的paint方法进入的部分,这个问题没有发布在问题中
  • 也许我误解了他的问题,但是当我想到 JPanel 时,我会想到面板及其所有不容易或直接缩小的组件。
  • @HovercraftFullOfEels 也许我也误解了这个问题,但我认为他只有一个组件 (JPanel),他在其中绘制东西,而且他不关心子组件 - 我认为如果他有,他会已经发表评论说这个
  • 先生们。它只包含一个JLabel,它是面板的背景图像。将面板想象成打印预览。只是为了澄清我是她。
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 2016-09-28
  • 2012-01-06
  • 1970-01-01
  • 2021-01-16
  • 2012-12-11
  • 2021-12-23
  • 2019-03-06
相关资源
最近更新 更多