2016-11-22 24 views
-1

私が達成したいのは簡単ですが、JButton( 'right'と呼ばれる)を押してJLabelのx境界を100だけ増加させ、JLabel右に100ピクセル。私のようなものを試してされています:ボタンを押したときにjlabelのx境界に追加する方法

 if(clicked == right) { 
      piece.getBounds().x = +100; 
     } 

と、私が試した:

 if(clicked == right) { 
      piece.addBounds(100,0,0,0); 
     } 

メソッドaddBoundsタイプのため、未定義だったのJLabel は、私が試した:

 if(clicked == right) { 
      piece.setBounds(+100,0,0,0); 
     } 

と明確にすべてを上記のうち、動作しませんでしたが、試してみる価値があった。私がしようとしていることをする方法はありますか?

+0

これは、単一のラベルに適用されたEmptyBorderの値を変更するか、コンポーネントを完全に使い捨てにして、文字列やイメージのカスタムペインティングを行うことで、より良い結果が得られるようです。この「ラベルを動かす」ことの究極の目的は何ですか?関連項目[XYの問題とは何か?](http://meta.stackexchange.com/q/66377) –

+0

ラベルが存在するコンポーネントの 'LayoutManager'とは何ですか?最小限の完全な例があなたを助けるのに役立ちます。 – hendrik

答えて

0

境界が実際に長方形であるので、あなたは、JLabelのの境界を取得し、そのx位置を進め、その後、適切なメソッドを呼び出すことによって境界を設定することができます:スイング、私の記憶が正しければ

Rectangle bounds = piece.getBounds(); // get the bounds 
bounds.x += 100; // increment the x value 
piece.setBounds(bounds); // re-set the new bounds 

repaint(); // call repaint on the container that holds the JLabel so it is repainted 
+0

ありがとう!私はまだJavaについて多くのことを知っていない、まだ学んで、あなたの応答に感謝! –

0

をJavaのコンポーネントは、変更が行われたときに再ペイントする必要があります。

ボタンを押したときに「repaint()」メソッドを呼び出すだけで、コンポーネントの変更が更新されるようにしてください。

関連する問題