Il progetto che sto facendo è una spece di portachiavi, legge un file di testo di nome Appunti.txt e crea dei pulsanti con i nomi delle banche, cliccando sul pulsante deve apparire in una casella di testo la password associata ed inserirla nella Clipboard.
Fin qui funziona, ora vorrei aggiungere la possibilità di modificare una password e salvarla sul file di testo, ma per farlo devo conoscere l'indice del pulsante cliccato, ho tentato con putClientProperty, ma non mi funziona, allego il codice.
Sono un principiante di java quindi vi prego non dare niente per scontato.
public class ProvaFrame extends javax.swing.JFrame {
private static int righe = 4;
private static int colonne = 6;
JButton buttons[];
public ProvaFrame() {
String fileName= "appunti2.txt"; // STESSA CARTELLA
File file= new File(fileName);
//List<String> lines = new ArrayList<>();
List<List<String>> lines = new ArrayList<>();
Scanner inputStream;
try{
inputStream = new Scanner(file);
while(inputStream.hasNext()){
String line= inputStream.next();
String[] values = line.split(",");
lines.add(Arrays.asList(values));
}
inputStream.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}
buttons = new JButton[lines.size()]; /// array di pulsanti
initComponents();
jPanel1.setLayout(new GridLayout( 1, 0)); // RIGHE,COLONNE
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(righe, colonne, 2, 2)); // rige col gap1 gap2
for(int i = 0; i < lines.size(); i++) {
buttons[i] = new JButton(lines.get(i).get(0));
String comando = lines.get(i).get(1);
buttons[i].setActionCommand(comando);
buttons[i].putClientProperty("indice", i); // <<<<<<<<<<<< per trovare l'indice
buttons[i].addActionListener(new ActionListener()
{
// @Override
public void actionPerformed(ActionEvent ae)
{
JButton but = (JButton) ae.getSource();
String indice = (String) but.getClientProperty("indice"); //<<<<<<<< da errore
jLabel1.setText(indice);
jTextField2.setText(but.getActionCommand());
StringSelection stringSelection = new StringSelection (but.getActionCommand());
Clipboard clpbrd = Toolkit.getDefaultToolkit ().getSystemClipboard ();
clpbrd.setContents (stringSelection, null);
}
});
buttonPanel.add(buttons[i]);
}
jPanel1.add(buttonPanel);
}
@SuppressWarnings("unchecked")
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// salvataggio ancora da scrivere
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ProvaFrame().setVisible(true);
}
});
}
}