bli*_*app 6 java awt scrollpane mousewheel
像许多现代鼠标和触控板一样,我的笔记本电脑支持垂直和水平滚动.一旦你习惯它,这是一个令人上瘾的功能.我只是希望我的Java应用程序通过触控板/鼠标滚轮支持水平滚动,但在我搜索它的任何地方似乎都不可能在Java中.
我真的希望有人告诉我,我在某种程度上做错了,这个功能已被请求行为:http://bugs.sun.com/bugdatabase/view_bug.do?video_id = 6440198
无法做这个简单的事情实际上是我正在努力的应用程序的交易破坏者.事实上,对于我能想象的任何应用程序!我在Java后端投入了一些时间,所以我真的很想找到一个看似简单的解决方案.
问题是我可以做些什么来实现这种行为?原始操作系统级别的事件是否被java暴露给我,那么我是否需要从头开始编写这个?
import java.awt.*;
public class ScrollExample extends Canvas {
public void paint(Graphics g) {
g.setColor(Color.green);
g.fillOval(0,0,400, 400);
}
public static void main(String[] args) {
ScrollExample b = new ScrollExample();
Frame f = new Frame ("Scroll Example");
ScrollPane scroller = new ScrollPane (ScrollPane.SCROLLBARS_ALWAYS);
scroller.add(b,"Center");
f.setPreferredSize(new Dimension(500,500));
f.add ("Center",scroller);
f.pack();
f.show();
}
}
Run Code Online (Sandbox Code Playgroud)
Swing示例适用于水平和垂直滚动
import java.awt.*;
import javax.swing.*;
public class ScrollExample extends JPanel {
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.green);
g.fillOval(0,0,400, 400);
}
public static void main(String[] args) {
JFrame f = new JFrame ("Scroll Example");
ScrollExample p = new ScrollExample();
p.setPreferredSize(new Dimension(1000, 1000));
JScrollPane scroller = new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroller.getHorizontalScrollBar().setUnitIncrement(10);
scroller.getVerticalScrollBar().setUnitIncrement(10);
f.setPreferredSize(new Dimension(500,500));
f.add (scroller,BorderLayout.CENTER);
f.pack();
f.show();
}
}
Run Code Online (Sandbox Code Playgroud)