0

別のクラスで構築された JPanel のディメンション (優先サイズまたはサイズに関係なく) を取得するにはどうすればよいですか?

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 は時々 Panel を切断します..それが私が Size にアクセスする必要がある理由です...私はこれまですべてを試しました...または、手動で行う必要のない垂直 BoxLayout のような同じ結果を持つ代替の Layoutmanager を知っていますか?サイズを読んでいますか?

以前の投稿は同じ問題を参照しています.. 編集:getPreferredSize -methodをオーバーライドします。問題は、次のようにサイズに影響を与えるすべてのパラメーターにアクセスできないことです

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 の読み方 クラスでインスタンス化しても、初期値があります。

4

1 に答える 1