我現在可以看到滾動優先級被賦予垂直滾動。我想改變這一點。我怎麼做?如何將Java Swing JScrollPane鼠標滾輪優先級更改爲水平滾動?
1
A
回答
0
要改變,你需要創建自己的版本JScrollPane
的默認滾動優先JScrollPane
當鼠標滾輪移動執行水平ScrollBar
進來的行動,而不是垂直ScrollBar
。
JScrollPane中的重寫版本可以這樣創建:
import javax.swing.JScrollPane;
import javax.swing.JScrollBar;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseWheelListener;
import java.awt.event.MouseWheelEvent;
class MyJScrollPane extends JScrollPane
{
public MyJScrollPane(Component component)
{
super(component);
final JScrollBar horizontalScrollBar = getHorizontalScrollBar();
final JScrollBar verticalScrollBar = getVerticalScrollBar();
setWheelScrollingEnabled(false);
addMouseWheelListener(new MouseAdapter()
{
public void mouseWheelMoved(MouseWheelEvent evt)
{
if (evt.getWheelRotation() == 1)//mouse wheel was rotated down/ towards the user
{
int iScrollAmount = evt.getScrollAmount();
int iNewValue = horizontalScrollBar.getValue() + horizontalScrollBar.getBlockIncrement() * iScrollAmount;
if (iNewValue <= horizontalScrollBar.getMaximum())
{
horizontalScrollBar.setValue(iNewValue);
}
}
else if (evt.getWheelRotation() == -1)//mouse wheel was rotated up/away from the user
{
int iScrollAmount = evt.getScrollAmount();
int iNewValue = horizontalScrollBar.getValue() - horizontalScrollBar.getBlockIncrement() * iScrollAmount;
if (iNewValue >= 0)
{
horizontalScrollBar.setValue(iNewValue);
}
}
}
});
}
}
我希望這能解決您的JScrollPane
滾動優先的問題。
2
感謝第一個答案 - 非常有幫助。然而,我發現上述響應中的iNewValue需要乘以evt.getWheelRotation()值,該值是滾輪鼠標實際旋轉的不同滾輪鼠標段的數量。
另外的時要滾動的需求考慮到這個問題,以及條件 - 的條件必須是evt.getWheelRotation()< = -1或evt.getWheelRotation()> = 1
下面是一個更新的例子,爲我工作。
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseWheelEvent;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
class MyJScrollPane extends JScrollPane
{
public MyJScrollPane(Component component)
{
super(component);
final JScrollBar horizontalScrollBar = getHorizontalScrollBar();
final JScrollBar verticalScrollBar = getVerticalScrollBar();
setWheelScrollingEnabled(false);
addMouseWheelListener(new MouseAdapter()
{
public void mouseWheelMoved(MouseWheelEvent evt)
{
if (evt.getWheelRotation() >= 1)//mouse wheel was rotated down/ towards the user
{
int iScrollAmount = evt.getScrollAmount();
int iNewValue = horizontalScrollBar.getValue() + horizontalScrollBar.getBlockIncrement() * iScrollAmount * Math.abs(evt.getWheelRotation());
if (iNewValue <= horizontalScrollBar.getMaximum())
{
horizontalScrollBar.setValue(iNewValue);
}
}
else if (evt.getWheelRotation() <= -1)//mouse wheel was rotated up/away from the user
{
int iScrollAmount = evt.getScrollAmount();
int iNewValue = horizontalScrollBar.getValue() - horizontalScrollBar.getBlockIncrement() * iScrollAmount * Math.abs(evt.getWheelRotation());
if (iNewValue >= 0)
{
horizontalScrollBar.setValue(iNewValue);
}
}
}
});
}
}
相關問題
- 1. jscrollpane水平鼠標滾輪
- 2. jscrollpane添加水平鼠標滾輪
- 3. jquery水平滾動鼠標滾輪
- 4. 鼠標滾輪滾動水平
- 5. iScroll 4水平鼠標滾輪滾動
- 6. 水平滾動鼠標滾輪
- 7. JavaScript:水平滾動鼠標滾輪
- 8. ScrollViewer水平鼠標滾輪滾動
- 9. 使用css將鼠標滾輪設置爲水平滾動
- 10. 如何禁用JScrollPane標題中鼠標滾輪的滾動?
- 11. 檢測水平鼠標滾輪運動
- 12. 水平滑動jQuery鼠標滾輪
- 13. 如何使用鼠標滾輪在WPF中水平滾動?
- 14. jscrollpane - 水平滾動
- 15. 動態div滾動鼠標滾輪水平和垂直
- 16. 真正平滑滾動鼠標滾輪
- 17. 滾動頁面,平行鼠標滾輪
- 18. 平滑滾動鼠標滾輪?
- 19. 快速平滑滾動鼠標滾輪
- 20. 如何讓JScrollPane滾動每行一個鼠標滾輪一行?
- 21. 鼠標滾輪平滑滾動
- 22. jquery/javascript鼠標滾輪滾動水平/垂直
- 23. 帶翻轉插件的鼠標滾輪水平滾動
- 24. 用鼠標滾輪在div中水平滾動
- 25. 對列表鼠標滾輪水平滾動:反方向
- 26. 緊張的鼠標滾輪水平滾動
- 27. 使用鼠標滾輪(C#和WinAPI)的水平滾動
- 28. 水平滾動面板通過鼠標拖動或使用鼠標滾輪
- 29. 讓`QWebView`在鼠標滾輪上水平滾動
- 30. JScrollPane的錯誤:垂直使用鼠標滾輪滾動精美,而且滾動1px的水平
對於JTextComponents,JList或JTable或....,(在此表單中)此問題不可回答 – mKorbel