私は数時間前からプロジェクトを続けてきました。setPreferredSize()を呼び出した後、getWidth()とgetHeight()は0になります。
JPanelを追加する親JFrameがあり、開発中のシミュレーションのレンダリングと表示に使用されます。 JPanelに追加されるスイングオブジェクトはありません。これは、グラフィックスオブジェクトを使用してシェイプをレンダリングするためだけに使用されるためです。
public class SimulationPanel extends JPanel {
private BufferedImage junction;
private Graphics2D graphics;
public SimulationPanel() {
super();
initPanel();
}
private void initPanel() {
this.setPreferredSize(new Dimension(600, 600)); //TODO: bug with not sizing the junction correctly.
junction = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
graphics = junction.createGraphics();
setBackground(Color.white);
System.out.println(getWidth());
}
コードは、特に私は新しいBufferedImageを作成しようinitPanel()メソッドの2行目に壊れる:以下のような
私のコードです。
AWT-EventQueueの-0 "スレッドの例外 "例外状態からの出力:
" java.lang.IllegalArgumentExceptionが幅(0)と高さ(0)> 0でなければならない" 私は本当にわかりませんよこれがなぜであるかについて。私は過去の答えをStack Overflowから使いこなそうとしましたが、彼らは役に立たなかった。
これは私の最初の投稿ですので、それほど悪くはないと思います。
ありがとうございました。
サンプルメインを含めることはできますか?パネルが追加されたJFrameは表示されていますか? – LazyCubicleMonkey
@LazyCubicleMonkeyは実際にはサンプルメインを含むことはできませんが、これは上記のJPanelが追加されたクラスです。これは明確化を助けるはずです。 http://pastebin.com/sydYnSgd –