मुझे विश्वास है कि जावा में यह संभव नहीं है। वैसे यह जेएनआई के माध्यम से संभव है लेकिन यह दर्द की दुनिया है।
घटनाओं के साथ ऐसा करना मुश्किल नहीं है, और आपके बाकी ऐप के साथ बेहतर तरीके से एकीकृत होगा।
import javax.swing.*;
import java.awt.event.*;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
final JLabel label = new JLabel("Click on me and hold the mouse button down");
label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
frame.getContentPane().add(label);
label.addMouseListener(new TimingMouseAdapter());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static class TimingMouseAdapter extends MouseAdapter {
private Timer timer;
public void mousePressed(MouseEvent e) {
timer = new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Mouse still pressed...");
}
});
timer.start();
}
public void mouseReleased(MouseEvent e) {
if (timer != null) {
timer.stop();
}
}
}
}
इस संशोधन करना अलग-अलग समय समय के बाद (जैसे बदलते तूलिका मोड के रूप में) अलग अलग काम करने की सीधी-सपाट होना चाहिए: यहाँ कंसोल के लिए प्रत्येक 100 ms लिखते समय माउस बटन दबाया जाता है, इसका एक उदाहरण।
स्रोत
2009-09-03 11:33:15
क्षमा करें, लेकिन ... क्यों? –