[SOLUCIONADO]Cambiando Titulo en JTable

Iniciado por W0lFy, 23 Mayo 2010, 13:59 PM

0 Miembros y 1 Visitante están viendo este tema.

W0lFy

Buenas gente, tengo el siguiente Código:

Código (java) [Seleccionar]
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:

Código (java) [Seleccionar]
      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!
K@NuT0

Leyer

Primero agrega un MouseListener al header de la tabla

Código (java) [Seleccionar]
table.getTableHeader().addMouseListener

Luego en el metodo auto generado mouseClicked haces lo siguiente:
Código (java) [Seleccionar]

@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.

W0lFy

Muchas gracias, me sirvio bastante. Un saludo
K@NuT0