GUIアプリケーションの開発、JSWingを使用してXMLファイルをロードしてから逆シリアル化し、JPanelにすべてのオブジェクトを追加します。私は、ウィンドウを移動したり、パネルをクリックするまで、彼らはJava再描画コンポーネントが正しく表示されない
私は、ウィンドウを移動した後
どのように見えるか は、しかし、これは、彼らはので、この問題を解決する方法を、正しく見える<
私は、このリンク http://docs.oracle.com/javase/6/docs/api/javax/swing/JComponent.html#paintComponent(java.awt.Graphics) を見てのJComponentのコンストラクタで、私は
setOpaque(true);
を使用するので、それは、答えであるかもしれませんしかし、私はまだ問題の解決方法が分からないので、ドキュメントの部分が非常に分かりにくいです(何らかの意味で私には分かりません:-D)
ところで、絵画そのものは次のようになりますこの
for (NetObject o : objects) {
addNewObject(o);
}
とaddNewObject(全体ではなくコード)
public void addNewObject(NetObject o) {
DraggableComponent object = new DraggableComponent(o, editorIndex); //Creates a draggableComponent
this.add(object);//Adds this component to main container
object.setOverbearing(true); //On click ,this panel gains lowest z-buffer
object.setSize(48, 48);
object.setLocation(o.x - 23, o.y - 23);
object.setBackground(Color.WHITE);
this.repaint(); //this = JPanel
}
とオーバーライドpaintComponentコード各ループの後 - -
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (isOpaque()) {
if (object.type == 2) { //tarnsition
g.drawImage(transition, 0, 0, this);
} else if (object.type == 1) {
boolean test = g.drawImage(place, 0, 0, this); //place
g.drawString(object.loadTokens(), 3, 27); // 1,2,3,4...
}
}
}
iがthis.revalidateを呼び出そうとdidntの助けを借り、働く唯一の方法は、ウィンドウに何とか移動させることで、妙に、この問題は私の同僚がこれを開発している、Windowsのみ@存在しますLinuxではまったく同じアプリケーションであり、グラフィカルな問題は経験しません。
私はこのようなトピックが非常にたくさんあることを知っていますが、私は正直なところ解決策を見つけられませんでした。答えを
おかげで、 OSIRIS
おそらく 'pack()'がそれを解決します。それ以外の場合は、[SSCCE](http://sscce.org/)を投稿してください。 –