Tôi cần phải thiết kế thanh cuộn này cho tất cả scrollpanes tôi:Tuỳ chỉnh thiết kế JScollPane Java Swing
Với Java Swing. Tôi đang sử dụng Netbeans IDE. Giải pháp đơn giản nhất là gì?
Cảm ơn bạn rất nhiều.
Trân
Tôi cần phải thiết kế thanh cuộn này cho tất cả scrollpanes tôi:Tuỳ chỉnh thiết kế JScollPane Java Swing
Với Java Swing. Tôi đang sử dụng Netbeans IDE. Giải pháp đơn giản nhất là gì?
Cảm ơn bạn rất nhiều.
Trân
Bạn có thể tùy biến giao diện của một thành phần Swing bởi thiết lập một giao diện người dùng tùy chỉnh. Trong trường hợp của thanh cuộn một cửa sổ cuộn, bạn làm
scrollPane.getVerticalScrollBar().setUI(new MyScrollBarUI());
nơi MyScrollBarUI
có nguồn gốc từ javax.swing.plaf.basic.BasicScrollBarUI
. Để thực hiện việc này cho tất cả các thanh cuộn (không chỉ trong JScrollPane
trường hợp), hãy gọi
UIManager.put("ScrollBarUI", "my.package.MyScrollBarUI");
trước khi bạn tạo bất kỳ thành phần Swing nào.
Trong MyScrollBarUI
, bạn ghi đè lên các phương pháp sau đây:
public class MyScrollBarUI extends BasicScrollBarUI {
@Override
protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
// your code
}
@Override
protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {
// your code
}
}
thanh cuộn của bạn là đồ họa rất đơn giản, vì vậy nó không phải là quá khó để thực hiện.
Câu trả lời tuyệt vời cảm ơn bạn rất nhiều –
paintTrack (Đồ họa g, JComponent c, Rectangle trackBounds) 'và' paintThumb' (cùng một phương thức chữ ký) trong [BasicScrollBarUI] (http://docs.oracle.com/javase/6/docs/api/javax/swing/plaf/ basic/BasicScrollBarUI.html) hoặc bạn có thể không thấy gì cả. – Nateowami
Có thể không mã hóa 'mở rộng BasicScrollBarUI' nhưng để mở rộng lớp UI thanh cuộn hiện đang được sử dụng? Giống như 'mở rộng scrollBar.getUI(). GetClass()'? – Bowi
1) override JToolBar
2) hầu hết Custom Look and Feel overrode rằng
mối quan hệ của thanh công cụ với thanh cuộn là ... ;-) Plus (sau tất cả là sáng thứ Hai): bạn ghi đè lên phương thức, các lớp được mở rộng (hoặc được triển khai) – kleopatra
Đừng quên rằng nếu bạn có kế hoạch để sử dụng UIManager để ghi đè lên tất cả các thanh cuộn như thế này
UIManager.put("ScrollBarUI", "my.custom.SimpleScrollBarUI");
sau đó lớp SimpleScrollBarUI bạn phải có phương pháp createUI, ví dụ:
public class SimpleScrollBarUI extends BasicScrollBarUI {
public static ComponentUI createUI(JComponent c) {
return new SimpleScrollBarUI();
}
//...
}
i đã không nhận được bạn. một scrollpane tự động chèn một thanh cuộn khi kích thước của phần tử nó chứa bị tổn hại. – gprathour