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