我想從JScrollPane中的滾動條中刪除滾動條箭頭按鈕。我將如何做到這一點?從JScrollPane中的Swing滾動條中刪除箭頭
3
A
回答
2
如果您使用的是基本版本的JScrollBar,那麼它可能使用BasicScrollBarUI進行渲染。我建議你擴展BasicScrollBarUI來創建一個自定義的UI類(比如MyBasicScrollBarUI)。這些按鈕是超類中的受保護變量。因此,您需要重寫子類中的installComponents()方法,並確保您不添加按鈕。看到下面的代碼片段並隱藏在那裏建議的行。
protected void installComponents(){
switch (scrollbar.getOrientation()) {
case JScrollBar.VERTICAL:
incrButton = createIncreaseButton(SOUTH);
decrButton = createDecreaseButton(NORTH);
break;
case JScrollBar.HORIZONTAL:
if (scrollbar.getComponentOrientation().isLeftToRight()) {
incrButton = createIncreaseButton(EAST);
decrButton = createDecreaseButton(WEST);
} else {
incrButton = createIncreaseButton(WEST);
decrButton = createDecreaseButton(EAST);
}
break;
}
scrollbar.add(incrButton); // Comment out this line to hide arrow
scrollbar.add(decrButton); // Comment out this line to hide arrow
// Force the children's enabled state to be updated.
scrollbar.setEnabled(scrollbar.isEnabled());
}
然後,在你的代碼中初始化的JScrollBar後,你可以調用setUI(),並通過在MyBasicScrollBarUI類的一個實例。
注:我沒有嘗試過這個,但從代碼看起來它可以工作。
2
class NoArrowScrollBarUI extends BasicScrollBarUI {
protected JButton createZeroButton() {
JButton button = new JButton("zero button");
Dimension zeroDim = new Dimension(0,0);
button.setPreferredSize(zeroDim);
button.setMinimumSize(zeroDim);
button.setMaximumSize(zeroDim);
return button;
}
@Override
protected JButton createDecreaseButton(int orientation) {
return createZeroButton();
}
@Override
protected JButton createIncreaseButton(int orientation) {
return createZeroButton();
}
@Override
protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
//own painting if needed
}
@Override
protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {
//own painting if needed
}
}
刪除按鈕讓空間即可。我發現make按鈕是最簡單的方法。
+0
這工作完美! – 2012-09-04 18:36:51
0
這不是最優雅的方式......但對我的作品
JScrollBar jsb = getHorizontalScrollBar();
for(Component c : jsb.getComponents()) {
jsb.remove(c);
}
相關問題
- 1. 刪除jscrollpane中的垂直滾動條?
- 2. Chart.js - 刪除滾動箭頭
- 3. JScrollPane的使用滾動箭頭,但沒有滾動條
- 4. JScrollPane使用箭頭鍵滾動
- 5. jScrollPane - 如何讓滾動條單獨的箭頭
- 6. 刪除滾動發光效果/箭頭
- 7. 添加箭頭滾動條
- 8. ScrollViewer +滾動條箭頭
- 9. 如何通過CSS去除滾動條中的箭頭
- 10. JScrollpane中的自定義滾動條// Java Swing
- 11. 從ActionBar中刪除HomeAsUpButton箭頭
- 12. 如何從IFrame中刪除滾動條?
- 13. 如何從iframe中刪除滾動條?
- 14. 從textarea中刪除滾動條
- 15. 無法從gridview中刪除滾動條
- 16. 從元素中刪除jScrollPane
- 17. 自定義滾動條箭頭
- 18. 滾動條底部箭頭不可見
- 19. JScrollPane的造型箭頭
- 20. 將JScrollPane滾動向右移動SWING
- 21. JScrollPane中的JPanel缺少滾動條
- 22. jscrollpane(jquery)中的滾動條高度
- 23. jQuery的JScrollPane中 - 滾動條創建
- 24. jScrollpane + IE7:滾動條顯示,但無法滾動 - 無法點擊箭頭,無法繪製條形圖幫助?
- 25. 如何防止按下箭頭鍵時滾動JScrollPane
- 26. 刪除滾動條
- 27. 刪除滾動條
- 28. 如何刪除UITableView中的箭頭
- 29. 如何刪除searchview中的箭頭?
- 30. 刪除JComboBox中的向下箭頭
你可能不應該延長「基本」 UI。如果你這樣做,那麼你失去了所有的LAF定製。所以你可能應該擴展MetalScrollBarUI,或者任何用於你的LAF的UI。 – camickr 2009-11-24 03:39:55
@camickr:同意。擴展基本用戶界面只是說明可能的解決方案的最簡單方法。 – Thimmayya 2009-11-24 03:45:10
@Thimmayya我嘗試了代碼,而箭頭圖標消失後,按鈕仍然存在。我剛剛編輯我的問題,指定刪除按鈕。謝謝你的想法。 – asawilliams 2009-11-24 16:12:00