У меня есть приложение на Java Swing, и я хочу создать в нем красивый компонент, такой как компонент в Microsoft Word. В 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 ) );
}
Можете ли вы помочь мне продолжить эту работу правильно?