从java中的另一个类获取JPanel对象的大小
如何获取在另一个类中构建的JPanel的维度(无论是PreferedSize还是Size) 在构建GUI的类中,我实例化了一个新面板,如下所示:从java中的另一个类获取JPanel对象的大小,java,swing,jpanel,layout-manager,Java,Swing,Jpanel,Layout Manager,如何获取在另一个类中构建的JPanel的维度(无论是PreferedSize还是Size) 在构建GUI的类中,我实例化了一个新面板,如下所示: PlotPanel specificPlot = gui.BuildPlottingData.makeImagePlot(discDbSpecific, sections, windowLength, 1, algoParam1, algoParam2, leadWindowSize, 0, errorAcc); 如您所见,此面板的行为与普通JPan
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]”,这显然是错误的
顺便说一句:
您是否知道如何处理此错误:
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?即使在类中实例化,它也会有初始值。- 不知道,没有张贴
- 在屏幕上是可见的
- 在
JFrame(JDialog等)之后调用.pack()
到目前为止,谢谢你,很抱歉错过了SSCCE。。它只是另一个类的一个jpanel。。当我重写
getPreferredSize()
时,我得到了正确的大小。问题是,在这种方法中,我无法访问影响面板高度的所有参数。。(在Overwriten'paintComponent()`-method中设置它们…重载这些方法,创建私有的空白,构造函数