[英]Java Swing feedback button on a tablet touch screen
是否可以从平板电脑上的Java Swing应用程序中的JButton获得反馈?
我正在使用Windows 8,并且如果将物理鼠标切换到设备,则JButton的运动反馈是典型的方式,但是如果使用手指,则反馈会消失。 我尝试了覆盖自定义继承的JButtons和estended等的重写方法,但是我不希望目标...我想这与我们用鼠标触摸屏幕时有关,您只单击屏幕上的一个点即可,但是如果您用手指触摸,则会选择多个像素。
任何想法?
非常感谢!
我不能完全确定您的反馈意思是什么,但我认为您的问题是“否”。 Swing从来没有为这种界面设计。 但是,如果您要引用的反馈类似于单击按钮时突出显示和肿胀之类的现象,则通常这应该是独立发生的。 如果我怀疑您是指触摸时执行了悬停操作,但未“轻按”按钮,则可能无法控制它。 或者,如果您的应用程序还不成熟,则可能需要考虑从swing切换到JavaFX,后者使用CSS来对这样的事情进行大量控制。
我有一个可以接受的解决方案。 我将尽力解释它尽可能简单和完整。
首先,您必须使用像这样的JButton扩展类:
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
/**
* Customized <code>JButton</code> to obtained a feedback user experience of movement.
* @author Gabriel Moreno.
*/
public class FeedbackTouchScreenButton extends JButton {
public FeedbackTouchScreenButton() {
super();
this.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(final MouseEvent e) {
new Thread(new Runnable() {
@Override
public void run() {
Color bg = e.getComponent().getBackground();
e.getComponent().setBackground(Color.BLUE); // For example
try {
Thread.sleep(100);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
e.getComponent().setBackground(bg);
}
}).start();
} // mouseClicked()
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
});
} // FeedbackTouchScreenButton()
} // FeedbackTouchScreenButton
当自定义对相关按钮执行的操作时,您将不得不(小心地)抛出另一个线程。 例如:
// ---
btnExample.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final java.awt.event.ActionEvent evt) {
new Thread(new Runnable() {
@Override
public void run() {
btnExampleActionPerformed(evt);
} // run()
}).start();
}
});
// ---
这个例子显然有效。 但实际上似乎只有... :-)
原因是因为在平板电脑屏幕上,组件的“ onPressed”状态无法像用鼠标指针那样用手指工作。
按键:'onClick'='onPressed'+'onRelease'。
而且“ onClick”是在触摸屏上正确完成的。 这是完成技巧的那一刻,当您从设备上松开手指时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.