2013-02-06 20 views
7

Więc mam JTextArea, który pokazuje tekst bezpośrednio z lewego górnego rogu. Chcę mieć margines na wszystkich 4 stronach, więc jest trochę miejsca między tekstem a granicą obszaru.Dodawanie marginesów w JTextArea?

Mam wiele badań i nie mogłem znaleźć żadnego rozwiązania. Jak mogę to zrobić?

Myślałem też, że mogę umieścić etykietę na wszystkich 4 stronach, aby utworzyć marży. Jak utworzyć JLabel o określonej szerokości i wysokości?

+2

Może ja nie rozumiem Twoje pytanie. Nie możesz użyć 'setMargin()'? – Smit

+0

Dokładnie to, co powiedział @Smit. [Relevant javadocs] (http://docs.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html#setMargin%28java.awt.Insets%29). ['Insets'] (http://docs.oracle.com/javase/6/docs/api/java/awt/Insets.html) to tylko 4 wartości w pikselach, które reprezentują rozmiar marginesu góry, dolne, lewe i prawe strony. – Brian

+0

AFAICT, tego właśnie szuka. Ustawienie granicy nie jest tak dobre, ponieważ spowodowałoby obniżenie domyślnej oczekiwanej granicy. Granica złożona mogłaby pomóc w obejściu problemu, ale jego lamer niż przy użyciu setMargin –

Odpowiedz

10

Możliwe, że nie rozumiem poprawnie twojego pytania. Jednakże można użyć setMargin()

// set the margin for all four sides 
tt.setMargin(new Insets(10,10,10,10)); // tt is JTextArea instance 

Niektóre Ważne linki

1. setMargin API

2. Class Insets

+0

Nigdy nie wiedziałem, że istnieje! – user2027425

+1

(@Smit, po naszych poprzednich uwagach): Wolę nie ustawiać obramowania, ponieważ usuwa oczekiwaną granicę pola tekstowego. Jeśli nadal chcesz użyć obramowania, możesz połączyć istniejącą granicę pola tekstowego z obramowaniem compount i pustą ramką jako granicą wewnętrzną lub zewnętrzną (w zależności od efektu, który próbujesz osiągnąć). Jeśli jest to wewnętrzny, wolę używać setMargin(), prostsze i bardziej niezawodne. –

+0

@GuillaumePolet +1 Dziękujemy za informacje. Jeśli chcesz, możesz również dodać tę odpowiedź. – Smit