|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2009
Messaggi: 37
|
[JAVA] JTextField non editabile ma selezionabile
Ciao a tutti, sto costruendo per allenamento un keygen in java. Ho una JTextField che mi restituisce il seriale in base all'ID inserito. Il problema è questo: devo rendere la text field non editabile. So già che posso usare il metodo setEditable oppure setEnabled, ma così facendo poi non posso selezionare la stringa e copiarla, per poi incollarla nel programma. Esiste qualche metodo che permetta questo? Oppure devo crearmelo io? Datemi qualche dritta perfavore.
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Se lo setti editable = false ed enabled = true puoi fare il copia/incolla del contenuto, ma non editarlo; non ho capito se è questo che ti serve
__________________
Il sole è giallo |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2009
Messaggi: 37
|
Scusa forse mi sono spiegato male. Avevo già fatto questo in modo tale che la textfield non sia modificabile ma selezionabile. Il problema però è che quando premo tasto destro sulla stringa selezionata non mi esce copia(tipo in windows). Volevo quindi sapere un metodo che mi permetta di fare la copia di questa stringa tramite il tasto destro del mouse seguito dal click con il sinistro sulla dicitura copia. Esattamente come in windows, la copia delle stringa poi la andrò a incollare nel programma. come posso fare?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Puoi sempre selezionare il testo con il mouse e copiarlo con CTRL + C.
Se non ti piace puoi sempre creare un JButton, ad esempio, che come action esegue la copia del testo selezionato nel JTextField: Codice:
// action del JButton
// field è il JTextField in questione
public void actionPerformed(ActionEvent e) {
field.copy();
}
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 04-11-2009 alle 18:08. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Jan 2010
Messaggi: 5
|
La actionPerformed è proprio quella detta da banryu79: yourField.copy() così come i metodi .cut() o paste() se ne hai bisogno. Se ti riferivi al menu a tendina che esce cliccando col tasto destro allora devi utilizzare "PopupListener" di "MouseListener". La tendina che sarà un oggetto "JPopupMenu" viene gestita come se fosse un menu, alla quale aggiungi i JMenuItem, ovvero il taglia-copia-incolla. Ti metto un esempio di codice:
Codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JPopupMenuEsempio extends JFrame {
private JPopupMenu popupMenu; //La tendina!
public JPopupMenuEsempio() {
super("JPopupMenuExample");
setBounds(20, 30, 200, 250);
JTextField textField = new JTextField("JPopMenu esempio!");
textField.setEditable(false);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(textField);
/******/
//inizi a creare gli item del menu a tendina
JMenuItem item1 = new JMenuItem("Taglia");
JMenuItem item2 = new JMenuItem("Copia");
JMenuItem item3 = new JMenuItem("Incolla");
//crei l'oggetto JPopupMenu - la tendina.
popupMenu = new JPopupMenu();
popupMenu.add(item1);
popupMenu.add(item2);
popupMenu.add(item3);
//dopo aver aggiunto i menuItem associamo l'evento PopupListener
//perchè appaia la tendina.
MouseListener popupListener = new PopupListener();
//associ l'ascolto del mouse al tuo textField
textField.addMouseListener(popupListener);
/******/
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}//end constructor
class PopupListener extends MouseAdapter {
//Devi implementare entrambi gli eventi perchè i sistemi mostrano la
//tendina o premendo o rilasciando il mouse.
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
//show() mostrarà la tendina dove le coordinate del mouse
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
public static void main(String[] args) {
JPopupMenuExample popupMenuExample = new JPopupMenuExample();
}
}
Spero di non averti confuso Ah sono nuovo del forum, volevo solo essere d'aiuto, magari nel frattempo avevi già risolto questo problema! Ciaooo |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:43.




















