写了个例子,看看是不是你想要的(就是界面难看些^_^)import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableModel;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTable;public class JTableTest extends JPanel {
public static String[][] data = {
{"nancy","cong","20"}
,{"rick","murphy","21"}
,{"marry","sunny","22"}
,{"jim","chen","23"}};
public static String[] columnName = {"firstName","lastName","age"};
protected JTable table = null;
protected JButton newButton = new JButton("new line");
protected JButton delButton = new JButton("del line");
public JTableTest(){
this.setLayout(new GridLayout(5,1));
DefaultTableModel model = new DefaultTableModel(data,columnName);
table = new JTable(model);
delButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int sr = getSelectedRow();
if(sr >= 0){
((DefaultTableModel)table.getModel()).removeRow(sr);
}
}
});
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
String[] newLine = {"firstName","lastName","age"};
((DefaultTableModel)table.getModel()).addRow(newLine);
}
});
this.add(new JTableHeader(table.getColumnModel()));
this.add(table);
this.add(newButton);
this.add(delButton);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new JTableTest());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640,480);
frame.setVisible(true);
}
public int getSelectedRow(){
int[] sr = table.getSelectedRows();
if(sr.length>0){
return sr[0];
}else{
return(-1);
}
}
}
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableModel;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTable;public class JTableTest extends JPanel {
public static String[][] data = {
{"nancy","cong","20"}
,{"rick","murphy","21"}
,{"marry","sunny","22"}
,{"jim","chen","23"}};
public static String[] columnName = {"firstName","lastName","age"};
protected JTable table = null;
protected JButton newButton = new JButton("new line");
protected JButton delButton = new JButton("del line");
public JTableTest(){
this.setLayout(new GridLayout(5,1));
DefaultTableModel model = new DefaultTableModel(data,columnName);
table = new JTable(model);
delButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int sr = getSelectedRow();
if(sr >= 0){
((DefaultTableModel)table.getModel()).removeRow(sr);
}
}
});
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
String[] newLine = {"firstName","lastName","age"};
((DefaultTableModel)table.getModel()).addRow(newLine);
}
});
this.add(new JTableHeader(table.getColumnModel()));
this.add(table);
this.add(newButton);
this.add(delButton);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new JTableTest());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640,480);
frame.setVisible(true);
}
public int getSelectedRow(){
int[] sr = table.getSelectedRows();
if(sr.length>0){
return sr[0];
}else{
return(-1);
}
}
}
后两个问题,TableModel修改了,通知一下视图即可。
更改后的代码如下:import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableModel;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;/*
* Created on 2004-6-28
*/
import javax.swing.JTable;
/**
* @author 郝勇
*/
public class JTableTest extends JPanel {
public static String[][] data = {
{"nancy","cong","20"}
,{"rick","murphy","21"}
,{"marry","sunny","22"}
,{"jim","chen","23"}};
public static String[] columnName = {"firstName","lastName","age"};
protected JTable table = null;
protected JButton newButton = new JButton("new line");
protected JButton delButton = new JButton("del line");
public JTableTest(){
//this.setSize(300,200);
//this.setLayout(new BorderLayout());
DefaultTableModel model = new DefaultTableModel(data,columnName);
table = new JTable(model);
delButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int sr = getSelectedRow();
if(sr >= 0){
((DefaultTableModel)table.getModel()).removeRow(sr);
}
}
});
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
String[] newLine = {"firstName","lastName","age"};
((DefaultTableModel)table.getModel()).addRow(newLine);
}
});
//this.add(new JTableHeader(table.getColumnModel()));
JScrollPane jsp = new JScrollPane(table);
jsp.setSize(300,300);
this.add(jsp);
this.add(newButton);
this.add(delButton);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new JTableTest());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640,480);
frame.setVisible(true);
}
public int getSelectedRow(){
int[] sr = table.getSelectedRows();
if(sr.length>0){
return sr[0];
}else{
return(-1);
}
}
}
还想请教一下:怎样让jtable中的某一行处在选中状态?我想在删除一行后将其上一行设置为选中的状态请问应该如何实现????
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableModel;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTable;
public class JTableTest extends JPanel {
public static String[][] data = {
{"nancy","cong","20"}
,{"rick","murphy","21"}
,{"marry","sunny","22"}
,{"jim","chen","23"}};
public static String[] columnName = {"firstName","lastName","age"};
protected JTable table = null;
protected JButton newButton = new JButton("new line");
protected JButton delButton = new JButton("del line");
public JTableTest(){
//this.setSize(300,200);
//this.setLayout(new BorderLayout());
DefaultTableModel model = new DefaultTableModel(data,columnName);
table = new JTable(model);
delButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int sr = getSelectedRow();
if(sr >= 0){
((DefaultTableModel)table.getModel()).removeRow(sr);
}
//remove all selections
table.clearSelection();
//select first row
table.setRowSelectionInterval(0,0);
}
});
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
String[] newLine = {"firstName","lastName","age"};
((DefaultTableModel)table.getModel()).addRow(newLine);
}
});
//this.add(new JTableHeader(table.getColumnModel()));
JScrollPane jsp = new JScrollPane(table);
jsp.setSize(300,300);
this.add(jsp);
this.add(newButton);
this.add(delButton);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new JTableTest());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640,480);
frame.setVisible(true);
}
public int getSelectedRow(){
int[] sr = table.getSelectedRows();
if(sr.length>0){
return sr[0];
}else{
return(-1);
}
}
}
public static String[][] data = {{"One","1"},{"Two","2"},{"Three","3"}};
这样,就把jtable中的数据定死了,我要显示的数据是不确定的,现在我想实现的是,
String[] name = {"One","Two","Three"};
String[] index = {"1","2","3"};
我怎样把上面的数组组合成你的data,我想应该是用循环,但定义data的时候可以用循环吗
希望你能够再帮忙解决一下非常感谢!!!!!
public static String[] firstName = {"nancy","rick","marry","jim",};
public static String[] lastName = {"cong","murphy","marry","chen"};
public static String[] age = {"20","21","22","23"};
则
String[][] data = new String[firstName.length][3];
for(int i=0;i<firstName.length;i++){
data[i][0] = firstName[i];
data[i][1] = lastName[i];
data[i][2] = age[i];
}
就可以得出组合起来的二维数组了全部代码如下:
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableModel;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTable;public class JTableTest extends JPanel {
/*
public static String[][] data = {
{"nancy","cong","20"}
,{"rick","murphy","21"}
,{"marry","sunny","22"}
,{"jim","chen","23"}};
*/
public static String[] firstName = {"nancy","rick","marry","jim",};
public static String[] lastName = {"cong","murphy","marry","chen"};
public static String[] age = {"20","21","22","23"};
public static String[] columnName = {"firstName","lastName","age"};
protected JTable table = null;
protected JButton newButton = new JButton("new line");
protected JButton delButton = new JButton("del line");
public JTableTest(){
//this.setSize(300,200);
//this.setLayout(new BorderLayout());
String[][] data = new String[firstName.length][3];
for(int i=0;i<firstName.length;i++){
data[i][0] = firstName[i];
data[i][1] = lastName[i];
data[i][2] = age[i];
}
DefaultTableModel model = new DefaultTableModel(data,columnName);
table = new JTable(model);
delButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int sr = getSelectedRow();
if(sr >= 0){
((DefaultTableModel)table.getModel()).removeRow(sr);
}
//remove all selections
table.clearSelection();
//select first row
table.setRowSelectionInterval(0,0);
}
});
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
String[] newLine = {"firstName","lastName","age"};
((DefaultTableModel)table.getModel()).addRow(newLine);
}
});
//this.add(new JTableHeader(table.getColumnModel()));
JScrollPane jsp = new JScrollPane(table);
jsp.setSize(300,300);
this.add(jsp);
this.add(newButton);
this.add(delButton);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new JTableTest());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640,480);
frame.setVisible(true);
}
public int getSelectedRow(){
int[] sr = table.getSelectedRows();
if(sr.length>0){
return sr[0];
}else{
return(-1);
}
}
}