gpt4 book ai didi

Java 应用程序在 Windows 8 平板电脑上运行时双击不起作用

转载 作者:可可西里 更新时间:2023-11-01 10:25:53 25 4
gpt4 key购买 nike

我创建了一个 Java 应用程序,它可以在 Windows7 操作系统的桌面上运行良好。我试图在 Windows 8 环境中运行该程序。我使用的设备是平板电脑。java 应用程序已安装并确实运行。但问题在于双击。当您双击并选择要选择的项目时,该程序具有类似功能。但在平板电脑中,你必须双击那个。但是双击该项目将无济于事。它只会在第一次点击时突出显示,但是当双击它时,什么也没有。Windows 8 平板电脑中与此有关的问题可能是什么。这与 Windows 8 中的 java 有关系吗?

非常感谢任何想法。谢谢

[更新:] Activity 代码:

    private void jListItemsMouseClicked(java.awt.event.MouseEvent evt) {                                           
System.out.println("Product Clicked 1");
if (evt.getClickCount() == 2) {

m_ReturnProduct = (ItemsInfo) jListItems.getSelectedValue();
if (m_ReturnProduct != null) {
buttonTransition(m_ReturnProduct);
}
}
}

最佳答案

看来,Windows 8 平板电脑的 MultiClickInterval 较低。

您可以通过以下行获取该值: Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval")

我的解决方法是,您使用 Timer 和 TimerTask 编写自己的 MultiClickInterval:

你需要一个静态的Map<java.awt.Component, Integer>保存每个 Component 的点击次数.

public static final Map<java.awt.Component, Integer> MULTI_CLICK_MAP = new HashMap<java.awt.Component, Integer>();

您还需要一个 java.util.Timer

private Timer timer = new Timer();

在方法中,您增加组件的计数器。当它是 2 时,你执行代码。TimerTask 将在定义的时间后重置计数器。

您的方法将如下所示:

private void jListItemsMouseClicked(java.awt.event.MouseEvent evt) { 
Component comp = evt.getComponent();

//added the component to the map or increase the counter
if(MULTI_CLICK_MAP.containsKey(comp)) {
MULTI_CLICK_MAP.put(comp, 1);
} else {
int oldCounter = MULTI_CLICK_MAP.get(comp);

MULTI_CLICK_MAP.put(comp, oldCounter + 1);
}

//check for double click
if (MULTI_CLICK_MAP.get(comp) == 2) {
MULTI_CLICK_MAP.remove(comp);

//here is your logic
m_ReturnProduct = (ItemsInfo) jListItems.getSelectedValue();
if (m_ReturnProduct != null) {
buttonTransition(m_ReturnProduct);
}
}
else {

//start the TimerTask that resets the counter. this will reset after 1 second (1000 milliseconds)
this.timer.schedule(new ClickReseter(comp), 1000);
}

}

ClickReset 是一个简单的 TimerTask,它包含 Component

public class ClickReseter extends TimerTask {

private Component component;

public ClickReseter(Component component)
{
this.component = component;
}

@Override
public void run()
{
MULTI_CLICK_MAP.remove(component);

}

}

我希望这对你有用。它没有测试它!如果您有任何问题,请随时提出。

关于Java 应用程序在 Windows 8 平板电脑上运行时双击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com