gpt4 book ai didi

java - 从 java 中的另一个类获取 JPanel 对象的大小

转载 作者:行者123 更新时间:2023-12-02 06:58:19 24 4
gpt4 key购买 nike

如何获取在另一个类中构建的 JPanel 的尺寸(无论是 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 有时会切断面板..这就是为什么我需要访问 Size 的原因...到目前为止我尝试了所有方法...或者您是否知 Prop 有相同结果(如垂直 BoxLayout)的替代 Layoutmanager 不需要手动读取 Size?

之前的帖子提到了同样的问题..编辑:我重写了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?即使在类中实例化它也会有初始值。

最佳答案

Do you have any idea how to handle this 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?)

How can i get the Dimension (no matter if prefferedSize or Size) of a JPanel which is build in another class?

  1. JPanel(对所有 JComponent 有效)在以下情况下返回自己的维度
    • 在屏幕上可见
    • 调用JFrame(JDialog等).pack()
  2. 覆盖 JPanel 的 getPreferredSize
  3. JPanel 在 API 中实现了 FlowLayout
  4. BoxLayout 接受(与其余 LayoutManager 相比)最小、最大和首选尺寸

关于java - 从 java 中的另一个类获取 JPanel 对象的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17014110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com