如何获得构建在另一个类中的 JPanel 的 Dimension(无论是 prefferedSize 还是 Size)?
在我构建 GUI 的类中,我实例化了一个新面板,如下所示:
PlotPanel specificPlot = gui.BuildPlottingData.makeImagePlot(discDbSpecific, sections,
windowLength, 1, algoParam1, algoParam2, leadWindowSize, 0, errorAcc);
如您所见,此面板的行为类似于普通的 JPanel:
public class PlotPanel extends JPanel {...
我正确设置了它的preferredSize(它被正确地可视化了)。
调用specificPlot.getPreferredSize()
给出了 'java.awt.Dimension[width=10,height=10]' 这显然是错误的..
顺便说一句:你知道如何处理这个错误:http ://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4915023
BoxLayout 有时会切断面板..这就是我需要访问大小的原因...到目前为止我尝试了所有方法...或者您是否知道另一种 Layoutmanager 具有相同的结果,例如垂直 BoxLayout 无需手动阅读尺寸?
较早的帖子提到了同样的问题。
编辑:我覆盖了getPreferredSize
-方法。问题是我无法访问影响大小的所有参数,如下所示
package getdata;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class Test extends JPanel{
@Override
public Dimension getPreferredSize(){
return new Dimension(10,20);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.white);
Graphics2D paint = (Graphics2D) g;
paint.drawString("test", 0, 10);
int strWdt = paint.getFontMetrics().stringWidth("test");
}
}
如何阅读 strWdt?即使在课堂上实例化它也将具有初始值。