Jtable + CheckBox e interação com itens selecionado(checkado)

0 respostas
rafaelgimenes

Boa Tarde.
Nunca mexi com Jtable, dei uma pesquisada e consegui montar uma tela, bem simples por sinal. no momento necessito de dar vida a ela.

A primeira coluna da minha tabela é um CheckBox, as linhas que estão checadas eu terei opções de interação como excluir e exportar os dados para um txt.

Pelo que pesquisei, não consigo que quando clique no check box de uma linha e logo já clique em outra o fundo da linha fique azulzinho, isso é possivel apenas segurando a tecla CTRL + Clique ?

Pra mim não importa eu posso desabilitar a seleção, e na ação do meu botão teria que varrer todos os Itens do Jtable e descobrir qual linhas estao checadas assim eu iria interagir somente com essas.

Como eu faço isso? o Jtable retorna um vetor?

segue o codigo
package gui;

import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Rectangle;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.table.TableColumn;
import javax.swing.table.*;
import javax.swing.JLabel;
import java.awt.Toolkit;
import java.util.EventObject;
import javax.swing.JCheckBox;
import java.awt.Component;
import javax.swing.event.CellEditorListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;



public class FrameHistorico extends JFrame {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JScrollPane ScrllHistorico = null;

	private JTable TblHistorico = null;

	private JTextField TxtDtIni = null;

	private JTextField TxtDtFim = null;

	private JComboBox CbxCanal = null;

	private JComboBox CbxSensor = null;

	private JButton BtnPesquisar = null;

	private JLabel LblDtini = null;

	private JLabel LblDtfim = null;

	private JLabel LblCanal = null;

	private JLabel LblTiposensor = null;

	private JLabel LblSalvarMedicoes = null;

	private JComboBox CbxDestino = null;

	private JLabel LblDestino = null;

	private JButton BtnSalvar = null;

	private JButton BtnGrafico = null;

	private JButton BtnSair = null;	
	
	
	
	/**
	 * This is the default constructor
	 */
	public FrameHistorico() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(614, 414);
		this.setName("FrmHistorico");
		this.setContentPane(getJContentPane());
		this.setTitle("HISTORICO");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			
			
			
			LblDestino = new JLabel();
			LblDestino.setBounds(new Rectangle(57, 357, 57, 15));
			LblDestino.setName("LblDestino");
			LblDestino.setText("Destino:");
			LblSalvarMedicoes = new JLabel();
			LblSalvarMedicoes.setBounds(new Rectangle(14, 335, 109, 15));
			LblSalvarMedicoes.setName("LblSalvarMedicoes");
			LblSalvarMedicoes.setText("Salvar Medições");
			LblTiposensor = new JLabel();
			LblTiposensor.setBounds(new Rectangle(174, 51, 108, 15));
			LblTiposensor.setName("LblTiposensor");
			LblTiposensor.setText("Tipo de Sensor:");
			LblCanal = new JLabel();
			LblCanal.setBounds(new Rectangle(20, 51, 55, 15));
			LblCanal.setName("LblCanal");
			LblCanal.setText("Canal:");
			LblDtfim = new JLabel();
			LblDtfim.setBounds(new Rectangle(219, 20, 38, 15));
			LblDtfim.setName("LblDtfim");
			LblDtfim.setText("até");
			LblDtini = new JLabel();
			LblDtini.setBounds(new Rectangle(20, 20, 85, 15));
			LblDtini.setName("LblDtini");
			LblDtini.setText("Período:   de");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.setName("PainelHistorico");
			jContentPane.add(getScrllHistorico(), null);
			jContentPane.add(getTxtDtIni(), null);
			jContentPane.add(getTxtDtFim(), null);
			jContentPane.add(getCbxCanal(), null);
			jContentPane.add(getCbxSensor(), null);
			jContentPane.add(getBtnPesquisar(), null);
			jContentPane.add(LblDtini, null);
			jContentPane.add(LblDtfim, null);
			jContentPane.add(LblCanal, null);
			jContentPane.add(LblTiposensor, null);
			jContentPane.add(LblSalvarMedicoes, null);
			jContentPane.add(getCbxDestino(), null);
			jContentPane.add(LblDestino, null);
			jContentPane.add(getBtnSalvar(), null);
			jContentPane.add(getBtnGrafico(), null);
			jContentPane.add(getBtnSair(), null);
			
		}
		return jContentPane;
	}

	/**
	 * This method initializes ScrllHistorico	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getScrllHistorico() {
		if (ScrllHistorico == null) {
			ScrllHistorico = new JScrollPane();
			ScrllHistorico.setBounds(6, 80, 595, 251);
			ScrllHistorico.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
			ScrllHistorico.setViewportView(getTblHistorico());
		}
		return ScrllHistorico;
	}

	/**
	 * This method initializes TblHistorico	
	 * 	
	 * @return javax.swing.JTable	
	 */
		
	
	private JTable getTblHistorico() {
		if (TblHistorico == null) {
			TblHistorico = new JTable(new ModeloTabela());
			//TblHistorico = new JTable();
			//impede o utilizador de reordenar as colunas
			TblHistorico.setAutoResizeMode(0);
			
			//teste de selecao
			//TblHistorico.isCellEditable(0, 1);
			
			TblHistorico.setSelectionMode(0);
			
			TblHistorico.getSelectionModel().addSelectionInterval(5,9);

			//tamanho das colunas
			TblHistorico.getColumnModel().getColumn(0).setPreferredWidth(30); //check
			TblHistorico.getColumnModel().getColumn(1).setPreferredWidth(110); //data
			TblHistorico.getColumnModel().getColumn(2).setPreferredWidth(60); //medicao
			TblHistorico.getColumnModel().getColumn(3).setPreferredWidth(50); //canal
			TblHistorico.getColumnModel().getColumn(4).setPreferredWidth(140); //formula
			TblHistorico.getColumnModel().getColumn(5).setPreferredWidth(50); //temp
			TblHistorico.getColumnModel().getColumn(6).setPreferredWidth(50); //emf
			TblHistorico.getColumnModel().getColumn(7).setPreferredWidth(50); //tliq
			TblHistorico.getColumnModel().getColumn(8).setPreferredWidth(50); //a(0)
			TblHistorico.getColumnModel().getColumn(9).setPreferredWidth(50); //%C
			TblHistorico.getColumnModel().getColumn(10).setPreferredWidth(50); //%AL
			TblHistorico.getColumnModel().getColumn(11).setPreferredWidth(50); //Adal
			TblHistorico.getColumnModel().getColumn(12).setPreferredWidth(100); //ResTemp
			TblHistorico.getColumnModel().getColumn(13).setPreferredWidth(100); //ResTliq/EmF
			
			//tamanho do quadro da tabela
			TblHistorico.setBounds(0, 0, 600, 80);
			TblHistorico.setShowGrid(true);
			TblHistorico.setName("TblHistorico");
			
		
			
		}
		return TblHistorico;
	}

	/**
	 * This method initializes TxtDtIni	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtDtIni() {
		if (TxtDtIni == null) {
			TxtDtIni = new JTextField();
			TxtDtIni.setText("ini");
			TxtDtIni.setBounds(126, 15, 75, 25);
			TxtDtIni.setName("TxtDtIni");
		}
		return TxtDtIni;
	}

	/**
	 * This method initializes TxtDtFim	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtDtFim() {
		if (TxtDtFim == null) {
			TxtDtFim = new JTextField();
			TxtDtFim.setBounds(286,15,75, 25);
			TxtDtFim.setText("fim");
			TxtDtFim.setName("TxtDtFim");
		}
		return TxtDtFim;
	}

	/**
	 * This method initializes CbxCanal	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCbxCanal() {
		if (CbxCanal == null) {
			CbxCanal = new JComboBox();
			CbxCanal.setBounds(82, 47, 75, 25);
		}
		return CbxCanal;
	}

	/**
	 * This method initializes CbxSensor	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCbxSensor() {
		if (CbxSensor == null) {
			CbxSensor = new JComboBox();
			CbxSensor.setBounds(new Rectangle(286, 47, 75, 25));
			CbxSensor.setName("CbxSensor");
		}
		return CbxSensor;
	}

	/**
	 * This method initializes BtnPesquisar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnPesquisar() {
		if (BtnPesquisar == null) {
			BtnPesquisar = new JButton();
			BtnPesquisar.setBounds(373, 13, 100, 25);
			BtnPesquisar.setText("Pesquisar");
			BtnPesquisar.setName("BtnPesquisar");
		}
		return BtnPesquisar;
	}

	/**
	 * This method initializes CbxDestino	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCbxDestino() {
		if (CbxDestino == null) {
			CbxDestino = new JComboBox();
			CbxDestino.setBounds(new Rectangle(123, 353, 75, 25));
			CbxDestino.setName("CbxDestino");
		}
		return CbxDestino;
	}

	/**
	 * This method initializes BtnSalvar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnSalvar() {
		if (BtnSalvar == null) {
			BtnSalvar = new JButton();
			BtnSalvar.setBounds(223, 353, 88, 25);
			BtnSalvar.setText("Salvar");
			BtnSalvar.setName("Salvar");
		}
		return BtnSalvar;
	}
		/**
		 * This method initializes BtnGrafico
		 * 	
		 * @return javax.swing.JButton	
		 */
		private JButton getBtnGrafico() {
			if (BtnGrafico == null) {
				BtnGrafico = new JButton();
				BtnGrafico.setText("Grafico");
				BtnGrafico.setBounds(new Rectangle(346, 353, 88, 25));
				BtnGrafico.setName("Grafico");
			}
			return BtnGrafico;	
	}

		/**
		 * This method initializes BtnSair	
		 * 	
		 * @return javax.swing.JButton	
		 */
		private JButton getBtnSair() {
			if (BtnSair == null) {
				BtnSair = new JButton();
				BtnSair.setBounds(514, 353, 70, 25);
				BtnSair.setText("Sair");
				BtnSair.setName("BtnSair");
			}
			return BtnSair;
		}
		
		

}  //  @jve:decl-index=0:visual-constraint="16,22"


/*
 * criando um modelo para nossa tabela
*/
class  ModeloTabela extends AbstractTableModel 
{
	private String[] colunas = {"Todas", "Data", "Medição", "Canal","Formulas","TEMP","EMF","TLIQ","a(0)","%C","%AL","ADAL","RES TEMP","RES TLIQ/EMF"};
	private Object[][] conteudodados = {
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-02-03", "a003","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-04-89", "a003","A","ReceitaG","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-05-19", "a003","A","ReceitaA","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-07-12", "a003","A","ReceitaG","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-08-08", "a003","A","ReceitaP","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-02-03", "a003","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-02-03", "a003","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-02-03", "a003","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-02-03", "a003","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-02-03", "a003","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(false), "2005-02-03", "a003","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     {new Boolean(true), "2005-02-03", "a002","A","ReceitaC","1600","302","---","22","-1","011","44","55","44"},
	     
	  };

	  public int getColumnCount(){
	    return colunas.length;
	  }

	  public int getRowCount(){
	    return conteudodados.length;
	  }

	  public String getColumnName(int col){
	     return colunas[col];
	  }

	  public Object getValueAt(int row, int col){
	    return conteudodados[row][col];
	  }

	  public Class getColumnClass(int c) {
			if (c == 0) {
				return Boolean.class;
			} else {
				return String.class;
			}
		}
	  
	  
	 /* public Class getColumnClass(int c){
	    return getValueAt(0, c).getClass();
	  }
      */
	  //não deixando editar a tabela, só a coluna zero
	  public boolean isCellEditable(int row, int col) {
		  if (col == 0) {
				return true;
			} else {
				return false;
			}
	  }
	  
	  
	  public void setValueAt(Object value, int row, int col) {
		  conteudodados[row][col] = value;
	    fireTableCellUpdated(row, col);
	  }
	}

ScreenShot da Tela
[img]http://rafaelgimenes.net/temp/java_jtable.png[/img]

Obrigado

Criado 28 de fevereiro de 2007
Respostas 0
Participantes 1