如何获得在另一个类中构建的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]'这显然是错误的..
顺便说一下: 你知道如何处理这个Bug:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4915023
BoxLayout有时会切断面板.. 这就是为什么我需要访问大小...我到目前为止尝试了一切...或者你知道一个替代的Layoutmanager与垂直BoxLayout相同的resuts需要manualy读取大小吗?
早些时候发布同样的问题..
修改:我覆盖了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?即使课堂上有实体,它也会有初始价值。
答案 0 :(得分:2)
你知道如何处理这个Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4915023
答案在评估中描述,其余部分是问题 - (Should I avoid the use of set[Preferred|Maximum|Minimum]Size methods in Java Swing?)
如何获得a的Dimension(无论是prefferedSize还是size) JPanel是在另一个类中构建的吗?
JFrame(JDialog, etc.).pack()
后