java jtable刷新_Java 在jtable中刷新一行的背景色

小编典典

例如,

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;

import java.util.Vector;

import javax.swing.*;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.event.TableModelEvent;

import javax.swing.event.TableModelListener;

import javax.swing.table.AbstractTableModel;

import javax.swing.table.TableCellRenderer;

public class Forum implements ListSelectionListener {

private JFrame frame = new JFrame("Frame");

private JPanel fatherCenter = new JPanel();

private JScrollPane tableScroll = new JScrollPane();

private myTableModel tableModel;

private JTable dialogTable;

private JButton blueButton;

private ListSelectionModel lsDialog;

private Color clr;

private Color clr1;

private void addComponentsToPane(Container pane) {

tableModel = new myTableModel();

dialogTable = new JTable(tableModel) {

private static final long serialVersionUID = 1L;

@Override

public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {

Component comp = super.prepareRenderer(renderer, row, column);

JComponent jc = (JComponent) comp;//for Custom JComponent

if (!isRowSelected(row)) {

int modelRow = convertRowIndexToModel(row);

boolean type = (Boolean) getModel().getValueAt(modelRow, 2);

boolean type1 = (Boolean) getModel().getValueAt(modelRow, 3);

comp.setForeground(Color.black);

if ((type) && (!type1)) {

comp.setBackground(clr1);

} else if ((!type) && (type1)) {

comp.setBackground(Color.orange);

} else if ((!type) || (!type1)) {

comp.setBackground(Color.red);

} else {

comp.setBackground(row % 2 == 0 ? getBackground() : getBackground().darker());

}

dialogTable.convertRowIndexToView(0);

} else {

comp.setForeground(Color.blue);

}

if (!isCellEditable(row, column)) {

comp.setForeground(Color.red);

comp.setBackground(Color.magenta);

}

return comp;

}

};

tableScroll = new JScrollPane(dialogTable, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);

tableScroll.setBorder(null);

dialogTable.getTableHeader().setReorderingAllowed(false);

dialogTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

lsDialog = dialogTable.getSelectionModel();

dialogTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

dialogTable.setRowHeight(20);

dialogTable.setRowMargin(2);

ListSelectionModel rowSelMod = dialogTable.getSelectionModel();

//ListSelectionModel colSelMod = dialogTable.getColumnModel().getSelectionModel();

rowSelMod.addListSelectionListener(this);

//colSelMod.addListSelectionListener(this);

blueButton = new JButton(" Blue BackGround ");

blueButton.setPreferredSize(new Dimension(100, 30));

blueButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (clr == Color.white) {

clr = Color.orange;

clr1 = Color.yellow;

} else {

clr = Color.white;

clr1 = Color.black;

}

System.out.println(clr);

dialogTable.setBackground(clr);

dialogTable.repaint();

}

});

fatherCenter = new JPanel();

fatherCenter.setLayout(new BorderLayout(10, 10));

fatherCenter.add(tableScroll, BorderLayout.CENTER);

fatherCenter.add(blueButton, BorderLayout.SOUTH);

pane.add(fatherCenter);

}

private void addData() {

Runnable doRun1 = new Runnable() {

@Override

public void run() {

tableModel.resetTable();

Vector tbl = new Vector();

Vector tbl1 = new Vector();

Random rnd = new Random();

tbl.add("Integer");

tbl.add("Double");

tbl.add("Boolean");

tbl.add("Boolean");

tbl.add("String");

tableModel.setColumnNames(tbl);

for (int row = 0; row < 30; row++) {

tbl1 = null;

tbl1 = new Vector();

tbl1.addElement(row + 1);

tbl1.addElement(rnd.nextInt(25) + 3.14);

tbl1.addElement((row % 3 == 0) ? false : true);

tbl1.addElement((row % 5 == 0) ? false : true);

if (row % 7 == 0) {

tbl1.add(("Canc"));

} else if (row % 6 == 0) {

tbl1.add(("Del"));

} else {

tbl1.add(("New"));

}

tableModel.addRow(tbl1);

}

addTableListener();

}

};

SwingUtilities.invokeLater(doRun1);

}

private void addTableListener() {

tableModel.addTableModelListener(new TableModelListener() {

@Override

public void tableChanged(TableModelEvent tme) {

if (tme.getType() == TableModelEvent.UPDATE) {

System.out.println("");

System.out.println("Cell " + tme.getFirstRow() + ", "

+ tme.getColumn() + " changed. The new value: "

+ tableModel.getValueAt(tme.getFirstRow(),

tme.getColumn()));

}

}

});

}

public void valueChanged(ListSelectionEvent le) {

int row = dialogTable.getSelectedRow();

int col = dialogTable.getSelectedColumn();

String str = "Selected Row(s): ";

int[] rows = dialogTable.getSelectedRows();

for (int i = 0; i < rows.length; i++) {

str += rows[i] + " ";

}

str += "Selected Column(s): ";

int[] cols = dialogTable.getSelectedColumns();

for (int i = 0; i < cols.length; i++) {

str += cols[i] + " ";

}

str += "Selected Cell: " + dialogTable.getSelectedRow() + ", " + dialogTable.getSelectedColumn();

System.out.println(str);

Object value = dialogTable.getValueAt(row, col);

System.out.println(String.valueOf(value));

}

private void createAndShowGUI() {

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout(10, 10));

addComponentsToPane(frame.getContentPane());

addData();

frame.setLocation(150, 150);

frame.setPreferredSize(new Dimension(400, 647));

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) {

Forum osFrame = new Forum();

}

public Forum() {

javax.swing.SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

createAndShowGUI();

}

});

}

private class myTableModel extends AbstractTableModel {

private static final long serialVersionUID = 1L;

private Vector> data;

private Vector colNames;

private boolean[] _columnsVisible = {true, true, true, true, true};

myTableModel() {

this.colNames = new Vector();

this.data = new Vector>();

}

myTableModel(Vector colnames) {

this.colNames = colnames;

this.data = new Vector>();

}

public void resetTable() {

this.colNames.removeAllElements();

this.data.removeAllElements();

}

public void setColumnNames(Vector colNames) {

this.colNames = colNames;

this.fireTableStructureChanged();

}

public void addRow(Vector data) {

this.data.add(data);

//this.fireTableDataChanged();

//this.fireTableStructureChanged();

this.fireTableRowsInserted(data.size() - 1, data.size() - 1);

}

public void removeRowAt(int row) {

this.data.removeElementAt(row);

//this.fireTableDataChanged();

this.fireTableRowsDeleted(row - 1, data.size() - 1);

}

@Override

public int getColumnCount() {

return this.colNames.size();

}

@Override

public Class> getColumnClass(int colNum) {

switch (colNum) {

case 0:

return Integer.class;

case 1:

return Double.class;

case 2:

return Boolean.class;

case 3:

return Boolean.class;

default:

return String.class;

}

}

@Override

public boolean isCellEditable(int row, int colNum) {

switch (colNum) {

case 2:

return false;

default:

return true;

}

}

@Override

public String getColumnName(int colNum) {

return this.colNames.get(colNum);

}

@Override

public int getRowCount() {

return this.data.size();

}

@Override

public Object getValueAt(int row, int col) {

Vector value = this.data.get(row);

return value.get(col);

}

@Override

public void setValueAt(Object newVal, int row, int col) {

Vector aRow = data.elementAt(row);

aRow.remove(col);

aRow.insertElementAt(newVal, col);

fireTableCellUpdated(row, col);

}

public void setColumnVisible(int index, boolean visible) {

this._columnsVisible[index] = visible;

this.fireTableStructureChanged();

}

}

}

2020-03-04

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值