刚刚接触JAVA
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.*;
import java.util.Vector;
public class J_Table extends JFrame{
DefaultTableColumnModel m_data;
JTable m_view;
public J_Table()
{
super("表格应用事例");
Container c=getContentPane();
c.setLayout(new FlowLayout());
int i;
JButton [] b={new JButton("添加行"),new JButton("添加列"),new JButton("删除行"),new JButton("删除列")};
for(i=0;i<4;i++)
{
c.add(b[i]);
}
m_data=new DefaultTableColumnModel();
m_view=new JTable((TableModel) m_data);
m_view.setPreferredScrollableViewportSize(new Dimension(300,150));
m_view.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane sPane=new JScrollPane(m_view);
c.add(sPane);
b[0].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mb_addRow();
System.out.println("添加一行");
}
});
b[1].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mb_addColumn();
System.out.println("添加一列");
}
});
b[2].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mb_deleteRow();
System.out.println("删除当前行");
}
});
b[3].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mb_deleteColumn();
System.out.println("删除当前列");
}
});
}
public void mb_addColumn()
{
int cNum=m_data.getColumnCount();
int rNum=((TableModel) m_data).getRowCount();
String s="列"+(cNum+1);
int c=m_view.getSelectedColumn();
System.out.println("当前列号为:"+c);
if(cNum==0||rNum==0||c<0)
{
m_data.addColumn(s);
return;
}
c++;
Vector<String> vs=mb_getColumnNames();
vs.add(c,s);
Vector data= m_data.getDataVector();
for(int i=0;i<data.size();i++)
{
Vector e=(Vector) data.get(i);
e.add(c,new String(" "));
}
m_data.setDataVector(data,vs);
}
public void mb_addRow()
{
int cNum=m_data.getColumnCount();
if(cNum==0)
mb_addColumn();
int rNum=m_data.getRowCount();
int r=mb_getRowCurrent();
System.out.println("当前行号:"+r);
m_data.insertRow(r,(Vector)null);
}
public void mb_deleteColumn()
{
int cNum=m_data.getColumnCount();
if(cNum==0)
return;
int c=m_view.getSelectedColumns();
if(c<0)
c=0;
System.out.println("当前列号:"+c);
Vector<String> vs=mb_getColumnNames();
vs.remove(c);
Vector data=m_data.getDataVector();
for(int i=0;i<data.size();i++)
{
Vector e=(Vector) data.get(i);
e.remove(c);
}
m_data.setDataVector(data,vs);
}
public void mb_deleteRow()
{
int rNum=m_data.getRowCount();
if(rNum>0)
{
int rEdit=mb_getRowCurrent();
m_data.removeRow(rEdit);
}
}
public Vector<String> mb_getColumnNames()
{
Vector<String> vs=new Vector<String>();
int cNum=m_data.getCoumnCount();
for(int i=0;i<cNum;i++)
vs.add(m_data.getColumnName(i));
return(vs);
}
public int mb_getRowCurrent()
{
int r=m_view.getSelectedRow();
if(r<0)
r=0;
return(r);
}
public static void main(String[] args) {
JFrame app=new J_Table();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(350,250);
app.setVisible(true);// TODO 自动生成的方法存根
}
}
下面显示Exception in thread "main" java.lang.Error: 无法解析的编译问题:
构造函数 JTable(DefaultTableColumnModel)未定义
没有为类型 DefaultTableColumnModel 定义方法 getRowCount()
类型 DefaultTableColumnModel 中的方法 addColumn(TableColumn)对于参数(String)不适用
没有为类型 DefaultTableColumnModel 定义方法 getDataVector()
没有为类型 DefaultTableColumnModel 定义方法 setDataVector(Vector, Vector<String>)
没有为类型 DefaultTableColumnModel 定义方法 getRowCount()
没有为类型 DefaultTableColumnModel 定义方法 insertRow(int, Vector)
类型不匹配:不能从 int[] 转换为 int
没有为类型 DefaultTableColumnModel 定义方法 getDataVector()
没有为类型 DefaultTableColumnModel 定义方法 setDataVector(Vector, Vector<String>)
没有为类型 DefaultTableColumnModel 定义方法 getRowCount()
没有为类型 DefaultTableColumnModel 定义方法 removeRow(int)
没有为类型 DefaultTableColumnModel 定义方法 getCoumnCount()
没有为类型 DefaultTableColumnModel 定义方法 getColumnName(int)
at J_Table.<init>(J_Table.java:24)
at J_Table.main(J_Table.java:157)