怎么样在最左边那列加上复选框?
程序如下:
package suolie;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
public class FixedColumnExample extends JFrame
{
public FixedColumnExample()
{
this.setSize(400, 150); data = new Object[][]
{
{"1", "11", "A", "", "", "", "", ""},
{new Boolean(true), "22", "", "B", "", "", "", ""},
{new Boolean(true), "33", "", "", "C", "", "", ""},
{new Boolean(true), "44", "", "", "", "D", "", ""},
{"5", "55", "", "", "", "", "E", ""},
{"6", "66", "", "", "", "", "", "F"}};
column = new Object[]
{"fixed 1", "a", "b", "c", "d", "e", "f", "g"}; AbstractTableModel Model1 = new AbstractTableModel()
{
public int getColumnCount()
{return 1; } public int getRowCount()
{return data.length; } public String getColumnName(int col)
{
return (String) column[col];
}
public Object getValueAt(int row, int col)
{
return data[row][col];
}
public boolean CellEditable(int row, int col)
{
return true;
}
};
AbstractTableModel model2 = new AbstractTableModel()
{
public int getColumnCount()
{
return column.length - 1;
}
public int getRowCount()
{
return data.length;
}
public String getColumnName(int col)
{
return (String) column[col + 1];
}
public Object getValueAt(int row, int col)
{
return data[row][col + 1];
}
public void setValueAt(Object obj, int row, int col)
{
data[row][col + 1] = obj;
}
public boolean CellEditable(int row, int col)
{
return true;
}
};
table1 = new JTable(Model1);
table1.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting())
checkSelection(true);
}
});
table2 = new JTable(model2);
table2.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting())
checkSelection(false);
}
});
table1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scroll = new JScrollPane(table2);
JViewport viewport = new JViewport();
viewport.setView(table1);
viewport.setPreferredSize(table1.getPreferredSize());
scroll.setRowHeaderView(viewport);
scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER, table1.getTableHeader());
getContentPane().add(scroll, BorderLayout.CENTER);
}
private void checkSelection(boolean isFixedTable)
{
int SelectedIndex1 = table1.getSelectedRow();
int selectedIndex2 = table2.getSelectedRow();
if (SelectedIndex1 != selectedIndex2)
{
if (isFixedTable)
{
table2.setRowSelectionInterval(SelectedIndex1, SelectedIndex1);
}
else
{
table1.setRowSelectionInterval(selectedIndex2, selectedIndex2);
}
}
}
public static void main(String[] args)
{
FixedColumnExample frame = new FixedColumnExample();
frame.show();
}
Object[][] data;
Object[] column;
JTable table1, table2;
}
程序如下:
package suolie;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
public class FixedColumnExample extends JFrame
{
public FixedColumnExample()
{
this.setSize(400, 150); data = new Object[][]
{
{"1", "11", "A", "", "", "", "", ""},
{new Boolean(true), "22", "", "B", "", "", "", ""},
{new Boolean(true), "33", "", "", "C", "", "", ""},
{new Boolean(true), "44", "", "", "", "D", "", ""},
{"5", "55", "", "", "", "", "E", ""},
{"6", "66", "", "", "", "", "", "F"}};
column = new Object[]
{"fixed 1", "a", "b", "c", "d", "e", "f", "g"}; AbstractTableModel Model1 = new AbstractTableModel()
{
public int getColumnCount()
{return 1; } public int getRowCount()
{return data.length; } public String getColumnName(int col)
{
return (String) column[col];
}
public Object getValueAt(int row, int col)
{
return data[row][col];
}
public boolean CellEditable(int row, int col)
{
return true;
}
};
AbstractTableModel model2 = new AbstractTableModel()
{
public int getColumnCount()
{
return column.length - 1;
}
public int getRowCount()
{
return data.length;
}
public String getColumnName(int col)
{
return (String) column[col + 1];
}
public Object getValueAt(int row, int col)
{
return data[row][col + 1];
}
public void setValueAt(Object obj, int row, int col)
{
data[row][col + 1] = obj;
}
public boolean CellEditable(int row, int col)
{
return true;
}
};
table1 = new JTable(Model1);
table1.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting())
checkSelection(true);
}
});
table2 = new JTable(model2);
table2.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting())
checkSelection(false);
}
});
table1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scroll = new JScrollPane(table2);
JViewport viewport = new JViewport();
viewport.setView(table1);
viewport.setPreferredSize(table1.getPreferredSize());
scroll.setRowHeaderView(viewport);
scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER, table1.getTableHeader());
getContentPane().add(scroll, BorderLayout.CENTER);
}
private void checkSelection(boolean isFixedTable)
{
int SelectedIndex1 = table1.getSelectedRow();
int selectedIndex2 = table2.getSelectedRow();
if (SelectedIndex1 != selectedIndex2)
{
if (isFixedTable)
{
table2.setRowSelectionInterval(SelectedIndex1, SelectedIndex1);
}
else
{
table1.setRowSelectionInterval(selectedIndex2, selectedIndex2);
}
}
}
public static void main(String[] args)
{
FixedColumnExample frame = new FixedColumnExample();
frame.show();
}
Object[][] data;
Object[] column;
JTable table1, table2;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货