Hello,I have a java sing form and search box,when I search an item,the search result outputs over the column,how I must fix it?
here is code:
package aaa;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.sql.*;
import java.util.Vector;
public class StudJFrame extends javax.swing.JFrame {
private JPanel jPanel1;
private JScrollPane jScrollPane1;
private JTable jTableStudents;
private JButton jButtonSearch;
private JComboBox jComboBoxGender;
private JPanel jPanel5;
private JPanel jPanel4;
private JPanel jPanel3;
private JLabel jLabel2;
private JTextField jTextFieldSurname;
private JLabel jLabel1;
private JPanel jPanel2;
Connection con= null;
public static void main(String[] args) {
StudJFrame inst = new StudJFrame();
inst.setVisible(true);
}
public StudJFrame() {
super();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:StudDBDS","","");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
initGUI();
}
private void initGUI() {
try {
BorderLayout thisLayout = new BorderLayout();
thisLayout.setVgap(20);
getContentPane().setLayout(thisLayout);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
jPanel2 = new JPanel();
GridLayout jPanel2Layout = new GridLayout(3, 1);
jPanel2Layout.setHgap(5);
jPanel2Layout.setVgap(5);
jPanel2Layout.setColumns(1);
jPanel2Layout.setRows(3);
jPanel2.setLayout(jPanel2Layout);
getContentPane().add(jPanel2, BorderLayout.NORTH);
jPanel2.setPreferredSize(new java.awt.Dimension(584, 94));
{
jPanel3 = new JPanel();
FlowLayout jPanel3Layout = new FlowLayout();
jPanel3Layout.setAlignment(FlowLayout.LEFT);
jPanel3.setLayout(jPanel3Layout);
jPanel2.add(jPanel3);
{
jLabel1 = new JLabel();
jPanel3.add(jLabel1);
jLabel1.setText("Surname");
}
{
jTextFieldSurname = new JTextField();
jPanel3.add(jTextFieldSurname);
jTextFieldSurname.setPreferredSize(new java.awt.Dimension(289, 23));
}
}
{
jPanel4 = new JPanel();
FlowLayout jPanel4Layout = new FlowLayout();
jPanel4Layout.setAlignment(FlowLayout.LEFT);
jPanel4.setLayout(jPanel4Layout);
jPanel2.add(jPanel4);
{
jLabel2 = new JLabel();
jPanel4.add(jLabel2);
jLabel2.setText(" Gender");
}
{
jComboBoxGender = new JComboBox();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select * From Gender");
jComboBoxGender.addItem("All");
while (rs.next())
{
jComboBoxGender.addItem(rs.getString(2));
}
jPanel4.add(jComboBoxGender);
}
}
{
jPanel5 = new JPanel();
jPanel2.add(jPanel5);
{
jButtonSearch = new JButton();
jPanel5.add(jButtonSearch);
jButtonSearch.setText("Search");
jButtonSearch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButtonSearchActionPerformed(evt);
}
});
}
}
}
{
jPanel1 = new JPanel();
BorderLayout jPanel1Layout = new BorderLayout();
jPanel1.setLayout(jPanel1Layout);
getContentPane().add(jPanel1, BorderLayout.CENTER);
{
jScrollPane1 = new JScrollPane();
jPanel1.add(jScrollPane1, BorderLayout.CENTER);
{
String[] header = {"Surname","Name","Group","Gender" };
jTableStudentsModel = new DefaultTableModel(header,0);
jTableStudents = new JTable();
jScrollPane1.setViewportView(jTableStudents);
jTableStudents.setModel(jTableStudentsModel);
}
}
}
pack();
setSize(600, 450);
} catch (Exception e) {
e.printStackTrace();
}
}
DefaultTableModel jTableStudentsModel = null;
private void jButtonSearchActionPerformed(ActionEvent evt) {
String gender = jComboBoxGender.getSelectedItem().toString();
String query = "Select Surname,FName,Groupe,Gender.GName FROM Student,Gender"+
" WHERE Student.GenderID = Gender.ID and Surname LIKE ? ";
if (!gender.equals("All"))
{
query +="and Gender.GName = ?";
}
try
{
PreparedStatement ps= con.prepareStatement(query);
ps.setString(1, jTextFieldSurname.getText()+"%");
if (!gender.equals("All")) ps.setString(2,gender );
ResultSet rs = ps.executeQuery();
int n= jTableStudentsModel.getRowCount();
for (int i = 0; i < n; i++) {
jTableStudentsModel.removeRow(i);
}
int i=0;
while (rs.next() )
{
Vector vec= new Vector();
vec.add(rs.getString(1));
vec.add(rs.getString(2));
vec.add(rs.getString(3));
vec.add(rs.getString(4));
jTableStudentsModel.addRow(vec);
}
jTableStudents.repaint();
}
catch (Exception ex) {
int i= 1;
i++;
}
}
}