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 codigopackage 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