Buenas gente, tengo el siguiente Código:
import java.util.ArrayList;
import java.util.List;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import net.sf.optexanalyzer.guitable.CompactTable;
import net.sf.optexanalyzer.table.Table;
import net.sf.optexanalyzer.table.Title;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.lang.Object;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
public static void main(String[] args) {
JPanel panel;
Table table = new Table(4,3);
table.initializePercentage();
List<Title> columnTitles = new ArrayList<Title>();
List<Title> rowTitles = new ArrayList<Title>();
Title tituloFil1 = new Title();
Title tituloFil2 = new Title();
Title tituloFil3 = new Title();
Title tituloFil4 = new Title();
Title tituloCol1 = new Title();
Title tituloCol2 = new Title();
Title tituloCol3 = new Title();
Title tituloCol4 = new Title();
tituloFil1.setName("Algoritmo 1");
tituloFil2.setName("Algoritmo 2");
tituloFil3.setName("Algoritmo 3");
tituloFil4.setName("Algoritmo 4");
tituloCol1.setName("");
tituloCol2.setName("Best");
tituloCol3.setName("Score");
tituloCol4.setName("#Bot");
columnTitles.add(tituloCol1);
columnTitles.add(tituloCol2);
columnTitles.add(tituloCol3);
columnTitles.add(tituloCol4);
rowTitles.add(tituloFil1);
rowTitles.add(tituloFil2);
rowTitles.add(tituloFil3);
rowTitles.add(tituloFil4);
table.setColumTitles(columnTitles);
table.setRowTitles(rowTitles);
CompactTable compact = new CompactTable(table);
JFrame frame = new JFrame();
panel = compact.getCompactTable();
panel.setVisible(true);
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
JFrame ventana = new JFrame();
JDesktopPane desktop = new JDesktopPane();
ventana.getContentPane().add(desktop);
JInternalFrame internal = new JInternalFrame();
desktop.add(internal);
}
mi pregunta es:
quiero cambiar el titulo con esta instruccion:
String entrada;
entrada=JOptionPane.showInputDialog(null, "Cambiar Titulo");
System.out.print(entrada);
pero, como pudeo hacer para que salte el evento al hacer doble click sobre la columna? Un saludo y gracias!
Primero agrega un MouseListener al header de la tabla
table.getTableHeader().addMouseListener
Luego en el metodo auto generado mouseClicked haces lo siguiente:
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2){
String entrada;
int column = table.columnAtPoint(e.getPoint());
if ((column > -1)){
try{
entrada=JOptionPane.showInputDialog(null, "Cambiar Titulo");
table.getColumn(table.getColumnName(column)).setHeaderValue(entrada);
table.updateUI();
}catch (Exception ex) {
}
}
}
}
Y con eso ya cambiaría el titulo al hacer doble click.
Un Saludo.
Muchas gracias, me sirvio bastante. Un saludo