MicrosoftWordのコンポーネントのような素敵なコンポーネントを作成したいJavaSwingアプリケーションがあります。Microsoft Wordでは、次のようにドキュメントの余白を変更できます。
ここでの秘訣は、上部の余白を(たとえば)1.5 "に変更すると、プレビュー画像が変更されてこれが表示されるため、画像内で線が少し下に移動して、余白の変更を表示し、ユーザーができるようにすることです。この変更によって彼のドキュメントがどの程度影響を受けるかを感じてください。たとえば、左マージンを(4.0 ")に変更すると、画像は次のようになります。
私がしたことは、これらの2つの画像のように、2つの画像を空白のページ画像と線のみを含む別の画像(線画像)を作成することです:
各画像をJLabelに重ねて挿入し、JSpinnerの上部マージン値を変更すると、「空白ページ」の画像は固定されたままですが、「線の画像」の境界線を変更して少し下に移動します。このトリックは上マージンではうまく機能しましたが、下/右/左マージンを変更すると動作が完全に悪くなります。
JSpinnerの値を変更するときに適用するコードは次のとおりです。
private void marginSpinnerStateChanged() {
//1. Get the approximate values of all margins :
int topMargin = (int)( Float.valueOf( topSpinner.getValue().toString() ) * 8 );
int bottomMargin = (int)( Float.valueOf( bottomSpinner.getValue().toString() ) * 8 );
int leftMargin = (int)( Float.valueOf( leftSpinner.getValue().toString() ) * 8 );
int rightMargin = (int)( Float.valueOf( rightSpinner.getValue().toString() ) * 8 );
//2. Apply all specified margins to the lines label :
linesLabel.setBorder( new EmptyBorder( topMargin, leftMargin, bottomMargin, rightMargin ) );
}
これを正しく機能させるために私を助けてくれませんか?