2011-11-29 39 views
5

tôi đang làm việc với Netbeans GUI và tôi muốn thêm 3 điểm ảnh không gian vào đầu JTextField tôi:Java Swing JTextField inset

enter image description here

Tôi đã tryied với setMargin, setInset trong GUI nhưng nó không thay đổi gì cả.

Tôi có một câu hỏi khác, tại sao đường viền dưới cùng bên phải không được làm tròn? đây là mã của tôi:

Border roundedBorder = new LineBorder(new Color(210,210,210), 1, true); 
researchTextField.setBorder(roundedBorder); 

thank you very much,

Trân

Trả lời

12

Sử dụng setMargin(...) nên làm việc.

Tuy nhiên, nếu bạn cũng đang sử dụng Đường viền thì đó có thể là vấn đề.

Thử sử dụng CompoundBorder nơi đường viền bên trong là EmptyBorder() và đường viền ngoài là đường viền khác của bạn. Ví dụ:

Border rounded = new LineBorder(new Color(210,210,210), 1, true); 
Border empty = new EmptyBorder(0, 3, 0, 0); 
textField.setBorder(rounded); 
Border border = new CompoundBorder(rounded, empty); 

lý do tại sao các biên giới dưới bên phải không được làm tròn?

Tôi không chắc tại sao đáy/phải của bạn không tròn. Sử dụng Metal LAF trên XP đường viền phải (trên và dưới) xuất hiện làm tròn nhưng các đường viền trái không tròn. Khi tôi sử dụng kích thước đường viền từ 2 trở lên, tất cả các góc sẽ xuất hiện như nhau.

+0

Bạn đang nhanh hơn so với tôi: 1+ :) –

3

setMargin(Inset myInset) làm việc cho tôi:

import java.awt.Insets; 
import javax.swing.*; 

public class TextFieldFun { 
    public static void main(String[] args) { 
     JTextField textfield = new JTextField(20); 
     JPanel panel = new JPanel(); 
     panel.add(textfield); 

     textfield.setMargin(new Insets(0, 10, 0, 0)); 

     JOptionPane.showMessageDialog(null, panel); 
    } 
}