当我单击相应行的复选框时,我想用J表的单元格值更新我的数据库。这是我的代码。我只是J2EE的初学者,所以请详细说明解决方案
package Inhospmgmt;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import java.awt.Toolkit;
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Font;
import java.awt.SystemColor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JSeparator;
import javax.swing.JPanel;
import javax.swing.RowSorter;
import javax.swing.border.MatteBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.border.BevelBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import javax.swing.JCheckBox;
public class investigation extends JFrame implements ActionListener
{
/**
*
*/
private static final long serialVersionUID = 2930370058483683162L;
static JFrame fm1=new JFrame();
int cnt = 0, r=0,c=0;
String columns[]={"SNO", "INVESTIGATION", "PRICE(Rs.)", "SELECTION"};
String data[][]=new String[cnt][3];
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JTextField textField_5;
private JTextField textField_6;
static JTable table=new JTable();
static JScrollPane jsp1;
DefaultTableModel tabModel ;
investigation()
{
fm1.getContentPane().setBackground(Color.WHITE);
fm1.setTitle("Social Care Hospital/Investigation");
fm1.setIconImage(Toolkit.getDefaultToolkit().getImage(investigation.class.getResource("/Inhospmgmt/img/icpic.jpg")));
fm1.getContentPane().setLayout(null);
JLabel lblInvestigation = new JLabel("Investigations");
lblInvestigation.setForeground(SystemColor.textHighlight);
lblInvestigation.setFont(new Font("Times New Roman", Font.BOLD, 30));
lblInvestigation.setHorizontalAlignment(SwingConstants.CENTER);
lblInvestigation.setBounds(557, 23, 229, 46);
fm1.getContentPane().add(lblInvestigation);
JLabel label = new JLabel("PID No.");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setForeground(SystemColor.textHighlight);
label.setFont(new Font("Tahoma", Font.BOLD, 20));
label.setBounds(10, 83, 79, 28);
fm1.getContentPane().add(label);
textField = new JTextField();
textField.setColumns(10);
textField.setBackground(Color.WHITE);
textField.setBounds(114, 78, 114, 33);
fm1.getContentPane().add(textField);
JButton button = new JButton("");
button.setIcon(new ImageIcon(investigation.class.getResource("/Inhospmgmt/img/unnamed.png")));
button.setFocusPainted(false);
button.setContentAreaFilled(false);
button.setBackground(Color.WHITE);
button.setBounds(227, 78, 33, 33);
fm1.getContentPane().add(button);
JLabel label_1 = new JLabel("Patient Name :");
label_1.setFont(new Font("Times New Roman", Font.PLAIN, 15));
label_1.setBounds(10, 144, 99, 22);
fm1.getContentPane().add(label_1);
textField_1 = new JTextField();
textField_1.setEnabled(false);
textField_1.setDisabledTextColor(Color.BLUE);
textField_1.setColumns(10);
textField_1.setBounds(137, 145, 226, 22);
fm1.getContentPane().add(textField_1);
JLabel label_2 = new JLabel("Patient Age :");
label_2.setFont(new Font("Times New Roman", Font.PLAIN, 15));
label_2.setBounds(411, 144, 90, 22);
fm1.getContentPane().add(label_2);
textField_2 = new JTextField();
textField_2.setEnabled(false);
textField_2.setDisabledTextColor(Color.BLUE);
textField_2.setColumns(10);
textField_2.setBounds(499, 145, 79, 22);
fm1.getContentPane().add(textField_2);
JLabel lblDepartment = new JLabel("Department :");
lblDepartment.setFont(new Font("Times New Roman", Font.PLAIN, 15));
lblDepartment.setBounds(633, 144, 99, 22);
fm1.getContentPane().add(lblDepartment);
textField_3 = new JTextField();
textField_3.setEnabled(false);
textField_3.setDisabledTextColor(Color.BLUE);
textField_3.setColumns(10);
textField_3.setBounds(725, 145, 249, 22);
fm1.getContentPane().add(textField_3);
JLabel lblWard = new JLabel("Ward :");
lblWard.setFont(new Font("Times New Roman", Font.PLAIN, 15));
lblWard.setBounds(1018, 144, 90, 22);
fm1.getContentPane().add(lblWard);
textField_4 = new JTextField();
textField_4.setEnabled(false);
textField_4.setDisabledTextColor(Color.BLUE);
textField_4.setColumns(10);
textField_4.setBounds(1082, 145, 165, 22);
fm1.getContentPane().add(textField_4);
JLabel lblBedNo = new JLabel("Bed No :");
lblBedNo.setFont(new Font("Times New Roman", Font.PLAIN, 15));
lblBedNo.setBounds(411, 192, 69, 22);
fm1.getContentPane().add(lblBedNo);
textField_5 = new JTextField();
textField_5.setEnabled(false);
textField_5.setDisabledTextColor(Color.BLUE);
textField_5.setColumns(10);
textField_5.setBounds(499, 193, 79, 22);
fm1.getContentPane().add(textField_5);
JLabel lblConsultingDoctor = new JLabel("Consulting Doctor :");
lblConsultingDoctor.setFont(new Font("Times New Roman", Font.PLAIN, 15));
lblConsultingDoctor.setBounds(10, 192, 143, 22);
fm1.getContentPane().add(lblConsultingDoctor);
textField_6 = new JTextField();
textField_6.setEnabled(false);
textField_6.setDisabledTextColor(Color.BLUE);
textField_6.setColumns(10);
textField_6.setBounds(138, 193, 226, 22);
fm1.getContentPane().add(textField_6);
JSeparator separator = new JSeparator();
separator.setBounds(0, 243, 1362, 2);
fm1.getContentPane().add(separator);
table = new JTable();
Connection con = MyConnection.connect();
try
{
String s ="SELECT SNo,INVESTIGATION,PRICE FROM investigation";
PreparedStatement p =con.prepareStatement(s);
ResultSet rs = p.executeQuery();
rs.last();
cnt = rs.getRow();
rs.beforeFirst();
String data[][]=new String[cnt][3];
while(rs.next())
{
data[r][c] = String.valueOf(rs.getInt("SNo")); ++c;
data[r][c] = rs.getString("INVESTIGATION");++c;
data[r][c] = String.valueOf(rs.getInt("PRICE")); ++c;
r=r+1;
c=0;
}
table.setModel(new DefaultTableModel(data,columns)
{
public boolean isCellEditable(int row, int column){
if(column==0 || column==1 || column==2 )
{
return false;
}
return true;
}
Class[ ] type=new Class[]{java.lang.String.class , java.lang.String.class ,java.lang.String.class, java.lang.Boolean.class} ;
public Class getColumnClass (int columnIndex)
{
return type [columnIndex] ;
}
} ) ;
setDefaultLookAndFeelDecorated(true);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setBackground(Color.white);
table.setGridColor(Color.magenta);
table.getColumnModel().getColumn(0).setPreferredWidth(80);
table.getColumnModel().getColumn(1).setPreferredWidth(200);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.getTableHeader().setBackground(Color.pink);
table.setRowSelectionAllowed(true);
table.getTableHeader().setFont(new Font("SansSerif",Font.BOLD, 15));
jsp1 = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jsp1.setBackground(Color.white);
jsp1.setViewportBorder(new MatteBorder(3, 3, 3, 3, (Color) new Color(0, 0, 0)));
jsp1.getViewport().setBackground(table.getBackground());
jsp1.setBounds(526, 404, 485, 162);
fm1.getContentPane().add(jsp1);
fm1.setVisible(true);
fm1.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
try {
con.close();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
new investigation() ;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:1)
将TableModelListener
添加到TableModel
的{{1}}。
为包含复选框的列生成事件时,请确保该值为Boolean.TRUE。然后生成将数据复制到数据库所需的SQL。
您可以查看:TableModelListener and multiple column validation了解使用JTable
的工作示例。