Я разрабатываю приложение для рисования на Swing, которое должно хорошо работать с Windows Touch.Когда пользователь касается JFrame, на экране появляются бесполезные сенсорные индикаторы.Худшим из них является квадратный индикатор с длинным нажатием, который обычно производит щелчок правой кнопкой мыши и открывает контекстное меню.
Большинство приложений рисования в Windows не отображают сенсорные индикаторы - к ним относятся paint.net,Penbook, SketchBook и Spirality.
Можно ли отключить эти сбивающие с толку индикаторы в моем приложении Swing?
![Screencast showing unwanted indicators](https://i.stack.imgur.com/SVjmt.gif)
Вот код, используемыйна скриншоте выше:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import java.util.ArrayList;
public class FingerPaint extends JPanel {
Point lastPoint;
ArrayList<Line2D> lines = new ArrayList<>();
public FingerPaint() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
lastPoint = e.getPoint();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
lines.add(new Line2D.Double(lastPoint, p));
lastPoint = p;
repaint();
}
});
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
// clear background
g2.setColor(Color.white);
g2.fill(g.getClip());
// paint segments
g2.setColor(Color.magenta);
g2.setStroke(new BasicStroke(3));
for (Line2D line : lines) {
g2.draw(line);
}
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(() -> {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new FingerPaint());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
});
}
}