package frame;import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;public class Make extends JPanel implements ActionListener {
JLabel label1;
JLabel label2;
JLabel label3;
JTextField text1;
JTextField text2;
JTextField text3;
JButton button1;
JButton button2;
JButton button3;
JButton button4;
JPanel p1;
JPanel p2;
JPanel p3;
JPanel p4;
public Make()
{
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
label1=new JLabel("姓名");
label2=new JLabel("密码");
label3=new JLabel("权限");
text1=new JTextField(10);
text2=new JTextField(10);
text3=new JTextField(5);
button1=new JButton("新建");
button1.addActionListener(this);
button2=new JButton("取消");
button2.addActionListener(this);
button3=new JButton("搜索");
button3.addActionListener(this);
button4=new JButton("保存");
button4.setVisible(false);
button4.addActionListener(this);
this.setLayout(new GridLayout(4,3));
p1.add(label1);
p1.add(text1);
p1.add(label2);
p1.add(text2);
p1.add(label3);
p1.add(text3);
p2.add(button1);
p2.add(button2);
p2.add(button3);
p4.add(button4); this.add(p1);
this.add(p2);
this.add(p3);
this.add(p4);
this.setSize(1000,600);
this.setLocation(20,30);
this.setVisible(true);
}
//搜索按纽数据库连接的函数
public String[] getData(){
String[] a=new String[3];
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:sqlserver://";
String serverName= "127.0.0.1";
String portNumber = "1433";
String databaseName= "CJGL";
String userName = "dragon";
String password = "123";
try
{
//step1
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
st = con.createStatement();
rs = st.executeQuery("select * from YHB where username="+"'"+text1.getText()+"'");
while (rs.next())
{
if(text1.getText().equals(rs.getString(1)))
{
a[0]=rs.getString(1);
a[1]=rs.getString(2);
a[2]=rs.getString(3);
}
// System.out.print("<tr>:"+rs.getInt(3));
} } catch (ClassNotFoundException e)
{
e.printStackTrace();
}catch (SQLException e)
{
e.printStackTrace();
} finally
{
//step 6
try
{
rs.close();
st.close();
con.close();
} catch (Exception e1)
{
}
} return a;
}
//用户信息编辑事件触发
public void actionPerformed(ActionEvent arg0) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:sqlserver://";
String serverName= "127.0.0.1";
String portNumber = "1433";
String databaseName= "CJGL";
String userName = "dragon";
String password = "123";
String[] r=new String[3];
//搜索按钮事件触发
if(arg0.getSource()==button3)
{
text3.setEditable(false);
text2.setEditable(false);
button1.setEnabled(false);
p3.removeAll();//清空面板
Table1 t=new Table1(getData());
p3.add(t);
button4.setVisible(true);
this.updateUI();
if("".equals(text1.getText()))
{
JOptionPane.showMessageDialog(null, "请输入所查询的用户", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}
//触发保存相应操作
if(arg0.getSource()==button4)
{
这里触发事件BUTTON4
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
PreparedStatement stat=con.prepareStatement("这里是语句,可否把下面传过来的数组数据,一个个插入");
stat.setString(1,);
stat.setString(2,);
stat.setString(3,);
stat.executeQuery(); }
}catch(Exception exception)
{
} }
}class Table1 extends JPanel {
/*表格列向量*/
Vector cell ;
Vector row;
Vector tableHeadName;
JTable table;
public Table1(String[] s) {
/*表格行向量*/
row = new Vector();
/*声明表格模型*/
DefaultTableModel tableModel = new DefaultTableModel();
/*声明表格头数组*/
String[] tableHeads = {"姓名","密码", "权限"};
/*将表格头转换过向量类型,以备表格模型使用*/
tableHeadName = new Vector();
for (int i = 0; i < tableHeads.length; i++) {
tableHeadName.add(tableHeads[i]);
}
/*初始化表格数据,这些数据实例运行来源于数据库中*/
//setText(String text);
cell = new Vector();
cell.add(s[0]);
cell.add(s[1]);
cell.add(s[2]);
row.add(cell);
/*设置表格模型*/
tableModel.setDataVector(row, tableHeadName);
/*表格使用模型*/
table = new JTable(tableModel);
table.setRowHeight(20);
table.setCursor(new Cursor(12));/*new Cursor(1)设置鼠标指针样式,12为手形*/
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setCursor(new Cursor(12));
table.setPreferredScrollableViewportSize(new Dimension(800,60));
this.add(scrollPane);
this.setSize(400, 300);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public int getCol()我想用这个方法把整行数据以数组方式传到BUTTON4事件里去,再一个个修改数据库,不知道可以不
{
int renew;
renew=table.getSelectedRow();//获得一行一列值
return renew;
}
}
}
最近发觉弄JTABLE 参数间传递很有难度,请大侠不吝赐教!
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;public class Make extends JPanel implements ActionListener {
JLabel label1;
JLabel label2;
JLabel label3;
JTextField text1;
JTextField text2;
JTextField text3;
JButton button1;
JButton button2;
JButton button3;
JButton button4;
JPanel p1;
JPanel p2;
JPanel p3;
JPanel p4;
public Make()
{
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
label1=new JLabel("姓名");
label2=new JLabel("密码");
label3=new JLabel("权限");
text1=new JTextField(10);
text2=new JTextField(10);
text3=new JTextField(5);
button1=new JButton("新建");
button1.addActionListener(this);
button2=new JButton("取消");
button2.addActionListener(this);
button3=new JButton("搜索");
button3.addActionListener(this);
button4=new JButton("保存");
button4.setVisible(false);
button4.addActionListener(this);
this.setLayout(new GridLayout(4,3));
p1.add(label1);
p1.add(text1);
p1.add(label2);
p1.add(text2);
p1.add(label3);
p1.add(text3);
p2.add(button1);
p2.add(button2);
p2.add(button3);
p4.add(button4); this.add(p1);
this.add(p2);
this.add(p3);
this.add(p4);
this.setSize(1000,600);
this.setLocation(20,30);
this.setVisible(true);
}
//搜索按纽数据库连接的函数
public String[] getData(){
String[] a=new String[3];
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:sqlserver://";
String serverName= "127.0.0.1";
String portNumber = "1433";
String databaseName= "CJGL";
String userName = "dragon";
String password = "123";
try
{
//step1
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
st = con.createStatement();
rs = st.executeQuery("select * from YHB where username="+"'"+text1.getText()+"'");
while (rs.next())
{
if(text1.getText().equals(rs.getString(1)))
{
a[0]=rs.getString(1);
a[1]=rs.getString(2);
a[2]=rs.getString(3);
}
// System.out.print("<tr>:"+rs.getInt(3));
} } catch (ClassNotFoundException e)
{
e.printStackTrace();
}catch (SQLException e)
{
e.printStackTrace();
} finally
{
//step 6
try
{
rs.close();
st.close();
con.close();
} catch (Exception e1)
{
}
} return a;
}
//用户信息编辑事件触发
public void actionPerformed(ActionEvent arg0) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:sqlserver://";
String serverName= "127.0.0.1";
String portNumber = "1433";
String databaseName= "CJGL";
String userName = "dragon";
String password = "123";
String[] r=new String[3];
//搜索按钮事件触发
if(arg0.getSource()==button3)
{
text3.setEditable(false);
text2.setEditable(false);
button1.setEnabled(false);
p3.removeAll();//清空面板
Table1 t=new Table1(getData());
p3.add(t);
button4.setVisible(true);
this.updateUI();
if("".equals(text1.getText()))
{
JOptionPane.showMessageDialog(null, "请输入所查询的用户", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}
//触发保存相应操作
if(arg0.getSource()==button4)
{
这里触发事件BUTTON4
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
PreparedStatement stat=con.prepareStatement("这里是语句,可否把下面传过来的数组数据,一个个插入");
stat.setString(1,);
stat.setString(2,);
stat.setString(3,);
stat.executeQuery(); }
}catch(Exception exception)
{
} }
}class Table1 extends JPanel {
/*表格列向量*/
Vector cell ;
Vector row;
Vector tableHeadName;
JTable table;
public Table1(String[] s) {
/*表格行向量*/
row = new Vector();
/*声明表格模型*/
DefaultTableModel tableModel = new DefaultTableModel();
/*声明表格头数组*/
String[] tableHeads = {"姓名","密码", "权限"};
/*将表格头转换过向量类型,以备表格模型使用*/
tableHeadName = new Vector();
for (int i = 0; i < tableHeads.length; i++) {
tableHeadName.add(tableHeads[i]);
}
/*初始化表格数据,这些数据实例运行来源于数据库中*/
//setText(String text);
cell = new Vector();
cell.add(s[0]);
cell.add(s[1]);
cell.add(s[2]);
row.add(cell);
/*设置表格模型*/
tableModel.setDataVector(row, tableHeadName);
/*表格使用模型*/
table = new JTable(tableModel);
table.setRowHeight(20);
table.setCursor(new Cursor(12));/*new Cursor(1)设置鼠标指针样式,12为手形*/
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setCursor(new Cursor(12));
table.setPreferredScrollableViewportSize(new Dimension(800,60));
this.add(scrollPane);
this.setSize(400, 300);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public int getCol()我想用这个方法把整行数据以数组方式传到BUTTON4事件里去,再一个个修改数据库,不知道可以不
{
int renew;
renew=table.getSelectedRow();//获得一行一列值
return renew;
}
}
}
最近发觉弄JTABLE 参数间传递很有难度,请大侠不吝赐教!
int renew;
renew=table.getSelectedRow();//获得一行一列值
return renew;
} 2、你的Button4是保存选中的行,还是保存当前表格所有的行?最后还是不明白,有什么难度。 你在class Table1 extends JPanel 添加一个方法public DefaultTableModel getTableModel(){
return (DefaultTableModel)table.getTableModel();
}
就什么都解决了,因为你删除的操作,表格中选中的行也是要删除的。如果你不想暴露TableModel的话,那就在Table1中添加相应的方法
我是这样想的,你看行不行,我想我先在查询出数据库的信息放到JTABLE中,然后修改后,再获得JTABLE数据,然后再把JTABLE数据修改到数据库中
您看能不能这样 我用一个方法从JTABLE中取得数据,打包成字符串数组,然后传会BUTTON4事件中,再根据传回来的数据逐一对数据库进行修改
其中Vector的每一位就是Table中的一行数据