2011-08-15 35 views
7

Làm cách nào để thực hiện JSplitPane để thay đổi kích thước false? Tôi không muốn đổi kích thước JSplitPane, tôi đã sử dụng nó cho đường viền của ngăn này. Có cách nào khác để tạo cấu trúc đường viền giống nhau để chia bảng điều khiển theo chiều dọc thành hai phần không.JSplitPane đặt có thể thay đổi kích thước false

+3

Tắt ngăn chia tách. Xem bên dưới. – camickr

Trả lời

7

Bạn có thể ghi đè lên JSplitPane methodes getDividerLocation()getLastDividerLocation và trả về một giá trị không đổi.

JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT){ 
    private final int location = 100; 
    { 
     setDividerLocation(location); 
    } 
    @Override 
    public int getDividerLocation() { 
     return location ; 
    } 
    @Override 
    public int getLastDividerLocation() { 
     return location ; 
    } 
}; 
+0

@Tapas Bose, không cần mở rộng lớp ngăn chia. – camickr

+0

@camickr Nhưng đó là chính xác những gì giải pháp này không, nó mở rộng JSpiltPane với một lớp vô danh. –

22
splitPane.setEnabled(false); 
+0

nhưng với nimbus tôi thấy không có biên giới nếu nó bị vô hiệu hóa. :( – oliholz

+0

giải pháp này là đơn giản và tuyệt vời – cseppento

+0

Điều này vô hiệu hóa các thành phần phụ nếu chúng kế thừa trạng thái gốc được bật/tắt, ví dụ: một danh sách jlist có thể bị vô hiệu hóa để có thể được chọn – Mgamerz

1
final double pos = split.getDividers().get(0).getPosition(); 
split.getDividers().get(0).positionProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> arg0, 
      Number arg1, Number arg2) { 
     split.getDividers().get(0).setPosition(pos); 
    } 
}); 
2

Để ngăn chặn người dùng thay đổi kích thước khung bạn cũng có thể thiết lập kích thước chia số không.

splitPane.setDividerSize(0); 
Các vấn đề liên quan