muszę zaprojektować przewijania dla wszystkich moich scrollpanes:Niestandardowy projekt JScollPane Java Swing
z Java Swing. Używam Netbeans IDE. Jakie jest najprostsze rozwiązanie?
Dziękuję bardzo.
Pozdrowienia
muszę zaprojektować przewijania dla wszystkich moich scrollpanes:Niestandardowy projekt JScollPane Java Swing
z Java Swing. Używam Netbeans IDE. Jakie jest najprostsze rozwiązanie?
Dziękuję bardzo.
Pozdrowienia
Można dostosować wygląd komponentu swing ustawienie niestandardowego UI. W przypadku panelu przewijania na pasku przewijania, możesz zrobić
scrollPane.getVerticalScrollBar().setUI(new MyScrollBarUI());
gdzie MyScrollBarUI
pochodzi z javax.swing.plaf.basic.BasicScrollBarUI
. Aby to zrobić dla wszystkich pasków przewijania (nie tylko w przypadkach JScrollPane
), zadzwoń
UIManager.put("ScrollBarUI", "my.package.MyScrollBarUI");
przed utworzeniem jakichkolwiek komponentów Swing.
W MyScrollBarUI
, przesłonić następujące metody:
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
}
}
paska przewijania jest graficznie bardzo prosta, więc nie powinno być zbyt trudne do wdrożenia.
Świetna odpowiedź dziękuję bardzo –
Pamiętaj, by zastąpić 'chronioną pustkę paintTrack (Grafika g, JComponent c, Rectangle trackBounds) 'i' paintThumb' (ta sama metoda podpisu) w [BasicScrollBarUI] (http://docs.oracle.com/javase/6/docs/api/javax/swing/plaf/ basic/BasicScrollBarUI.html) lub możesz nie widzieć niczego. – Nateowami
Czy byłoby możliwe, aby nie kodować w sposób twardy 'extends BasicScrollBarUI', ale aby rozszerzyć klasę interfejsu użytkownika paska przewijania, która jest aktualnie używana? Jak 'extends scrollBar.getUI(). GetClass()'? – Bowi
1) nadpisywania JToolBar
2) większość Custom Look and Feel overrode że
relacja paska narzędzi do paska przewijania jest taka ... ;-) Plus (w końcu jest poniedziałek rano): nadpisujesz metody, klasy są rozszerzone (lub zaimplementowane) – kleopatra
Nie zapominaj, że jeśli masz zamiar używać UIManager przesłonić wszystkie paski przewijania jak ten
UIManager.put("ScrollBarUI", "my.custom.SimpleScrollBarUI");
wówczas klasy SimpleScrollBarUI koniecznością mieć metoda createUI, tj:
public class SimpleScrollBarUI extends BasicScrollBarUI {
public static ComponentUI createUI(JComponent c) {
return new SimpleScrollBarUI();
}
//...
}
ja Nie rozumiem cię. scrollpane automatycznie wstawia pasek przewijania, gdy naruszony zostanie rozmiar elementu, który zawiera. – gprathour