Est-ce que quelqu'un sait comment faire pour désactiver Ctrl+C, Ctrl+X et
Ctrl+V dans une JList?
Pour un objet qui hérite de JTextComponent je sais comment faire. Il
suffit de surcharger les méthodes cut(), copy() et paste(). Mais pour une
JList je ne vois pas comment. Y-a-t-il une méthode simple pour y arriver?
Merci d'avance.
Est-ce que quelqu'un sait comment faire pour désactiver Ctrl+C, Ctrl+X et
Ctrl+V dans une JList?
Pour un objet qui hérite de JTextComponent je sais comment faire. Il
suffit de surcharger les méthodes cut(), copy() et paste(). Mais pour une
JList je ne vois pas comment. Y-a-t-il une méthode simple pour y arriver?
Merci d'avance.
Est-ce que quelqu'un sait comment faire pour désactiver Ctrl+C, Ctrl+X et
Ctrl+V dans une JList?
Pour un objet qui hérite de JTextComponent je sais comment faire. Il
suffit de surcharger les méthodes cut(), copy() et paste(). Mais pour une
JList je ne vois pas comment. Y-a-t-il une méthode simple pour y arriver?
Merci d'avance.
Bonjour,
Le 25/03/2018 05:54, jp a écrit :
Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Mais j'ai une petite question annexe : pour quelle raison interdire
cette fonctionnalité ? Ne pas l'avoir est *très* désagréable pour
l'utilisateur.
P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt ou si cette
adresse n'est pas valide.
Bonjour,
Le 25/03/2018 05:54, jp a écrit :
Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Mais j'ai une petite question annexe : pour quelle raison interdire
cette fonctionnalité ? Ne pas l'avoir est *très* désagréable pour
l'utilisateur.
P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt bloiiing@yahoo.com.invalid ou bloiiing@yahoo.invalid si cette
adresse n'est pas valide.
Bonjour,
Le 25/03/2018 05:54, jp a écrit :
Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Mais j'ai une petite question annexe : pour quelle raison interdire
cette fonctionnalité ? Ne pas l'avoir est *très* désagréable pour
l'utilisateur.
P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt ou si cette
adresse n'est pas valide.
Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Oui mais comment?
[...]
J'ai trouvé ça sur le net: [...]
P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt ou si cette
adresse n'est pas valide.
Ok. Rectifié.
Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Oui mais comment?
[...]
J'ai trouvé ça sur le net: [...]
P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt bloiiing@yahoo.com.invalid ou bloiiing@yahoo.invalid si cette
adresse n'est pas valide.
Ok. Rectifié.
Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Oui mais comment?
[...]
J'ai trouvé ça sur le net: [...]
P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt ou si cette
adresse n'est pas valide.
Ok. Rectifié.
Le Sun, 25 Mar 2018 22:28:46 +0200, Olivier Miakinen a écrit :Bonjour,
Le 25/03/2018 05:54, jp a écrit :Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Oui mais comment?Mais j'ai une petite question annexe : pour quelle raison interdire
cette fonctionnalité ? Ne pas l'avoir est *très* désagréable pour
l'utilisateur.
Ce ne serait pas dans tout le logiciel. Seulement au niveau de ma JList.
J'ai trouvé ça sur le net:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.KeyStroke;
import javax.swing.ScrollPaneConstants;
//Intercepting Ctrl+v demo
public class TestEditorPane {
private JEditorPane editorPane;
public static class CombinedAction implements ActionListener {
private final ActionListener action1;
private final ActionListener action2;
public CombinedAction(ActionListener action1, ActionListener
action2) {
super();
this.action1 = action1;
this.action2 = action2;
}
@Override
public void actionPerformed(ActionEvent e) {
if (action1 != null) {
action1.actionPerformed(e);
}
if (action2 != null) {
action2.actionPerformed(e);
}
}
}
public TestEditorPane() {
}
private void initUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// JTEXTBOX
editorPane = new JEditorPane();
KeyStroke ctrlV = KeyStroke.getKeyStroke(KeyEvent.VK_V,
KeyEvent.CTRL_DOWN_MASK);
final ActionListener ctrlVAction =
editorPane.getActionForKeyStroke(ctrlV);
editorPane.registerKeyboardAction(new CombinedAction(ctrlVAction,
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("This is my action on CTRL+V");
//Effectivement ça permet une action, mais le Ctrl-V à
}
}), ctrlV, JComponent.WHEN_FOCUSED);
// JSCROLLPANE
JScrollPane scroll1 = new JScrollPane(editorPane);
scroll1.setHorizontalScrollBarPolicy
(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scroll1.setVerticalScrollBarPolicy
(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.add(scroll1);
frame.setSize(400, 400);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
TestEditorPane test = new TestEditorPane();
test.initUI();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt ou si cette
adresse n'est pas valide.
Ok. Rectifié.
Le Sun, 25 Mar 2018 22:28:46 +0200, Olivier Miakinen a écrit :
Bonjour,
Le 25/03/2018 05:54, jp a écrit :
Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Oui mais comment?
Mais j'ai une petite question annexe : pour quelle raison interdire
cette fonctionnalité ? Ne pas l'avoir est *très* désagréable pour
l'utilisateur.
Ce ne serait pas dans tout le logiciel. Seulement au niveau de ma JList.
J'ai trouvé ça sur le net:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.KeyStroke;
import javax.swing.ScrollPaneConstants;
//Intercepting Ctrl+v demo
public class TestEditorPane {
private JEditorPane editorPane;
public static class CombinedAction implements ActionListener {
private final ActionListener action1;
private final ActionListener action2;
public CombinedAction(ActionListener action1, ActionListener
action2) {
super();
this.action1 = action1;
this.action2 = action2;
}
@Override
public void actionPerformed(ActionEvent e) {
if (action1 != null) {
action1.actionPerformed(e);
}
if (action2 != null) {
action2.actionPerformed(e);
}
}
}
public TestEditorPane() {
}
private void initUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// JTEXTBOX
editorPane = new JEditorPane();
KeyStroke ctrlV = KeyStroke.getKeyStroke(KeyEvent.VK_V,
KeyEvent.CTRL_DOWN_MASK);
final ActionListener ctrlVAction =
editorPane.getActionForKeyStroke(ctrlV);
editorPane.registerKeyboardAction(new CombinedAction(ctrlVAction,
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("This is my action on CTRL+V");
//Effectivement ça permet une action, mais le Ctrl-V à
}
}), ctrlV, JComponent.WHEN_FOCUSED);
// JSCROLLPANE
JScrollPane scroll1 = new JScrollPane(editorPane);
scroll1.setHorizontalScrollBarPolicy
(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scroll1.setVerticalScrollBarPolicy
(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.add(scroll1);
frame.setSize(400, 400);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
TestEditorPane test = new TestEditorPane();
test.initUI();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt bloiiing@yahoo.com.invalid ou bloiiing@yahoo.invalid si cette
adresse n'est pas valide.
Ok. Rectifié.
Le Sun, 25 Mar 2018 22:28:46 +0200, Olivier Miakinen a écrit :Bonjour,
Le 25/03/2018 05:54, jp a écrit :Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les
saisies au clavier et de filtrer les évènements pour ne pas les
transmettre aux éléments suivants ? Note que si cette méthode fonctionne
il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout
copier coller.
Oui mais comment?Mais j'ai une petite question annexe : pour quelle raison interdire
cette fonctionnalité ? Ne pas l'avoir est *très* désagréable pour
l'utilisateur.
Ce ne serait pas dans tout le logiciel. Seulement au niveau de ma JList.
J'ai trouvé ça sur le net:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.KeyStroke;
import javax.swing.ScrollPaneConstants;
//Intercepting Ctrl+v demo
public class TestEditorPane {
private JEditorPane editorPane;
public static class CombinedAction implements ActionListener {
private final ActionListener action1;
private final ActionListener action2;
public CombinedAction(ActionListener action1, ActionListener
action2) {
super();
this.action1 = action1;
this.action2 = action2;
}
@Override
public void actionPerformed(ActionEvent e) {
if (action1 != null) {
action1.actionPerformed(e);
}
if (action2 != null) {
action2.actionPerformed(e);
}
}
}
public TestEditorPane() {
}
private void initUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// JTEXTBOX
editorPane = new JEditorPane();
KeyStroke ctrlV = KeyStroke.getKeyStroke(KeyEvent.VK_V,
KeyEvent.CTRL_DOWN_MASK);
final ActionListener ctrlVAction =
editorPane.getActionForKeyStroke(ctrlV);
editorPane.registerKeyboardAction(new CombinedAction(ctrlVAction,
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("This is my action on CTRL+V");
//Effectivement ça permet une action, mais le Ctrl-V à
}
}), ctrlV, JComponent.WHEN_FOCUSED);
// JSCROLLPANE
JScrollPane scroll1 = new JScrollPane(editorPane);
scroll1.setHorizontalScrollBarPolicy
(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scroll1.setVerticalScrollBarPolicy
(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.add(scroll1);
frame.setSize(400, 400);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
TestEditorPane test = new TestEditorPane();
test.initUI();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid
chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre
plutôt ou si cette
adresse n'est pas valide.
Ok. Rectifié.
e.consume(); // Et l'objet qui a émis l'évènement
// l'ignorera
e.consume(); // Et l'objet qui a émis l'évènement
// l'ignorera
e.consume(); // Et l'objet qui a émis l'évènement
// l'ignorera
Moi j'ai trouvé ça :
http://www.fobec.com/java/992/intercepter-tous-evenements-clavier.html
La fonction dispatchKeyEvent() laisse passer certains évènements clavier
en retournant 'false' (parfois en les ayant transformés, par exemple les
minuscules qui deviennent des majuscules), mais elle *bloque* d'autres
évènements clavier en retournant 'true' (c'est là qu'il faudra tester
les Ctrl+C et autres).
Merci, mais c'est raté. C'est le nom de domaine de *premier* niveau
nommé .invalid qui a été réservé pour les adresses invalides.
Donc ou , mais pas
(parce que là ce serait un nom de domaine de
*second* niveau .invalid.com).
Moi j'ai trouvé ça :
http://www.fobec.com/java/992/intercepter-tous-evenements-clavier.html
La fonction dispatchKeyEvent() laisse passer certains évènements clavier
en retournant 'false' (parfois en les ayant transformés, par exemple les
minuscules qui deviennent des majuscules), mais elle *bloque* d'autres
évènements clavier en retournant 'true' (c'est là qu'il faudra tester
les Ctrl+C et autres).
Merci, mais c'est raté. C'est le nom de domaine de *premier* niveau
nommé .invalid qui a été réservé pour les adresses invalides.
Donc bloiiing@yahoo.com.invalid ou bloiiing@yahoo.invalid, mais pas
bloiiing@yahoo.invalid.com (parce que là ce serait un nom de domaine de
*second* niveau .invalid.com).
Moi j'ai trouvé ça :
http://www.fobec.com/java/992/intercepter-tous-evenements-clavier.html
La fonction dispatchKeyEvent() laisse passer certains évènements clavier
en retournant 'false' (parfois en les ayant transformés, par exemple les
minuscules qui deviennent des majuscules), mais elle *bloque* d'autres
évènements clavier en retournant 'true' (c'est là qu'il faudra tester
les Ctrl+C et autres).
Merci, mais c'est raté. C'est le nom de domaine de *premier* niveau
nommé .invalid qui a été réservé pour les adresses invalides.
Donc ou , mais pas
(parce que là ce serait un nom de domaine de
*second* niveau .invalid.com).
Le Mon, 26 Mar 2018 21:22:29 +0000, David Larochette a écrit :e.consume(); // Et l'objet qui a émis l'évènement
// l'ignorera
La méthode consume est protected. Comment faire pour l'utiliser dans une
méthode public, car elle n'est pas visible...
Le Mon, 26 Mar 2018 21:22:29 +0000, David Larochette a écrit :
e.consume(); // Et l'objet qui a émis l'évènement
// l'ignorera
La méthode consume est protected. Comment faire pour l'utiliser dans une
méthode public, car elle n'est pas visible...
Le Mon, 26 Mar 2018 21:22:29 +0000, David Larochette a écrit :e.consume(); // Et l'objet qui a émis l'évènement
// l'ignorera
La méthode consume est protected. Comment faire pour l'utiliser dans une
méthode public, car elle n'est pas visible...