【问题标题】:Displaying JLayeredPane in JScrollPane在 JScrollPane 中显示 JLayeredPane
【发布时间】:2011-09-03 05:21:52
【问题描述】:

这段代码显示了滚动窗格内的波形:

var scrollPane = new JScrollPane
var waveform = new Waveform(trackModel)   // JPanel with waveform

scrollPane.setViewportView(waveform)

这在 scrollPane 中只显示了一个灰色背景:

var scrollPane = new JScrollPane
var layeredPane = new JLayeredPane
var waveform = new Waveform(trackModel)   // JPanel with waveform

layeredPane.add(waveform, JLayeredPane.DEFAULT_LAYER)
layeredPane.setPreferredSize(trackModel.getSize())
scrollPane.setViewportView(layeredPane)

不知道为什么不显示波形(Waveform extends JPanel)。这里有更多信息:

System.out.println("waveform visibility: " + waveform.isVisible)
System.out.println("layeredPane visibility: " + layeredPane.isVisible)
System.out.println("scrollPane visibility: " + scrollPane.isVisible)

System.out.println("waveform dimensions: " + waveform.getPreferredSize.width + "/" + waveform.getPreferredSize.height)
System.out.println("layeredPane dimensions: " + layeredPane.getPreferredSize.width + "/" + layeredPane.getPreferredSize.height)
System.out.println("scrollPane dimensions: " + scrollPane.getPreferredSize.width + "/" + scrollPane.getPreferredSize.height)

System.out.println("waveform dimensions: " + waveform.getWidth + "/" + waveform.getHeight)
System.out.println("layeredPane dimensions: " + layeredPane.getWidth + "/" + layeredPane.getHeight)
System.out.println("scrollPane dimensions: " + scrollPane.getWidth + "/" + scrollPane.getHeight)

还有输出:

waveform visibility: true
layeredPane visibility: true
scrollPane visibility: true
waveform dimensions: 40315/200
layeredPane dimensions: 40315/200
scrollPane dimensions: 40318/203
waveform dimensions: 0/0
layeredPane dimensions: 0/0
scrollPane dimensions: 0/0

【问题讨论】:

  • 如果您的解决方案有效,请给出答案。

标签: java swing scala jscrollpane jlayeredpane


【解决方案1】:

解决方案

我将波形的 setPreferredSize 更改为 setSize。现在可以了。

【讨论】:

  • 错误的解决方案。这仅在您使用空布局时才有效。更好的解决方案是使用适当的布局管理器。
  • hmm .. @camickr:我的第一个冲动也是,但它在没有 LayourManager 的 LayeredPane 中?。
  • 哎呀...@kleopatra,How to Use Layered Panes 上的 Swing 教程实际上指出,"Although a layered pane has no layout manager by default, you can still assign a layout manager to the layered pane." 甚至还有一个工作示例。但是,在玩了一点之后,我同意它并没有真正的意义,因为所有组件都将添加到同一层,因此它很少有用。我的评论应该被忽略:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多