Hello! I am new at using Jtable and I need some help. I want to write the following CODE to display data from queue in the table
a problem : the data does not appear in the table
i dont kow what is a problem !!
i need help , please
Source Code :
// class student
public class student {
int id,age;
String fn,ln;
public student(int id,String fn,String ln,int age){
this.age = age;
this.id = id;
this.fn = fn;
this.ln = ln;
}
}
// class node
public class node {
student info;
node link;
public node(student st,node next){
this.info = info;
this.link = link;
}
}
// class queue
import javax.swing.*;
public class Queue{
node front ,rear;
int length;
public void enqueue( student x){
node newnode=new node(x,null);
if(front==null)
front=rear=newnode;
else{
rear.link=newnode;
rear=newnode;
}length++;
}
public student dequeue(){
student temp=front.info;
if(front==null && rear==null){
throw new RuntimeException("empty");
}else{
front=front.link;
if(front==null)
rear=null;
length--;
}return temp;
}
public String[][] getData(){
Queue x= new Queue();
x.front= front;
x.rear = rear;
String s[][] = new String[x.length][4];
if(x.front==null){
JOptionPane.showMessageDialog(null,"the Queue is empty,you must add new student befor");
}else{
student tmp;
for(int i=0;i<x.length;i++){
try{
tmp = x.dequeue();
s[i][0] = tmp.id + " ";
s[i][1] = tmp.fn;
s[i][2] = tmp.ln;
s[i][3] = tmp.age + " ";
}catch(Exception e){
System.out.println("Exception from getData");
}
}
}
return s;
}
}
// class program
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class program extends JFrame implements ActionListener{
Container c;
JTextField txtID,txtFN,txtLN,txtAge;
JLabel lblTitle,lblID,lblFN,lblLN,lblAge;
JButton btnAdd,btnUpdate,btnDelet,btnPrint,btnSort,btnRefresh,btnCancel;
JTable table;
String data[][];
Queue q;
public program(){
c = getContentPane();
setTitle(" Student Applicaion ");
c.setLayout(null);
q = new Queue();
// add lbl
lblTitle = new JLabel("ADD NEW STUDENT");
lblTitle.setFont(new Font ("Helvetica", Font.PLAIN, 20));
lblTitle.setBounds(50,20,200,20);
c.add(lblTitle);
lblID = new JLabel("ID");
lblID.setBounds(50,50,70,20);
c.add(lblID);
lblFN = new JLabel("First Name");
lblFN.setBounds(50,80,70,20);
c.add(lblFN);
lblLN = new JLabel("Last Name");
lblLN.setBounds(50,110,70,20);
c.add(lblLN);
lblAge = new JLabel("Age");
lblAge.setBounds(50,140,70,20);
c.add(lblAge);
// add txt
txtID = new JTextField();
txtID.setBounds(130,50,120,20);
c.add(txtID);
txtFN = new JTextField();
txtFN.setBounds(130,80,120,20);
c.add(txtFN);
txtLN = new JTextField();
txtLN.setBounds(130,110,120,20);
c.add(txtLN);
txtAge = new JTextField();
txtAge.setBounds(130,140,120,20);
c.add(txtAge);
// add btn
btnAdd = new JButton("Add");
btnAdd.setBounds(90,180,70,25);
c.add(btnAdd);
btnRefresh = new JButton("Refresh");
btnRefresh.setBounds(165,180,80,25);
c.add(btnRefresh);
btnUpdate = new JButton("Update");
btnUpdate.setBounds(300,50,100,20);
c.add(btnUpdate);
btnDelet = new JButton("Delet");
btnDelet.setBounds(300,80,100,20);
c.add(btnDelet);
btnPrint = new JButton("Print");
btnPrint.setBounds(300,110,100,20);
c.add(btnPrint);
btnSort = new JButton("Sort");
btnSort.setBounds(300,140,100,20);
c.add(btnSort);
btnCancel= new JButton("Cancel");
btnCancel.setBounds(355,435,80,25);
c.add(btnCancel);
// add table
// print();
btnAdd.addActionListener(this);
btnUpdate.addActionListener(this);
btnDelet.addActionListener(this);
btnPrint.addActionListener(this);
btnSort.addActionListener(this);
btnRefresh.addActionListener(this);
btnCancel.addActionListener(this);
setSize(450, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnCancel)
System.exit(0);
else if(e.getSource() == btnRefresh){
txtAge.setText("");
txtFN.setText("");
txtID.setText("");
txtLN.setText("");
}
else if(e.getSource() == btnAdd){
if(isThreeDigit(txtID.getText().trim()) == false || isNumber(txtID.getText().trim()) == false)
JOptionPane.showMessageDialog(null,"you entered invalid ID");
else if(isCapital(txtFN.getText().trim()) == false)
JOptionPane.showMessageDialog(null,"you must begin First name with capital Character");
else if(!isString(txtFN.getText().trim()) || !(isString(txtLN.getText().trim())))
JOptionPane.showMessageDialog(null,"You can't enter number on your name");
else if(checkAge(txtAge.getText().trim()) == false)
JOptionPane.showMessageDialog(null,"You must enter real age in numbers format");
else{
student st = new student(Integer.parseInt(txtID.getText().trim()),txtFN.getText(),
txtLN.getText(),Integer.parseInt(txtAge.getText().trim()));
q.enqueue(st);
// print();
}
}
else if(e.getSource() == btnPrint){
print();
}
}
public void print(){
String col[] = {"ID","FName","LName","Age"};
data = q.getData();
table = new JTable(data,col);
// table.editingStopped(ChangeEvent e) ;
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setBounds(10,230,420,200);
c.add(scrollPane);
}
//~~~~~~~~~~~~ Constraints
public boolean isThreeDigit(String id){
if(id.length() <= 3)
return true;
return false;
}
public boolean checkAge(String age){
if(!isNumber(age) || Integer.parseInt(age) > 90 || Integer.parseInt(age) < 6 )
return false;
return true;
}
public boolean isNumber(String id){
for(int i=0;i<id.length();i++){
char c=id.charAt(i);
if(c>'9'|| c<'0')
return false;
}
return true;
}
public boolean isString(String id){
for(int i=0;i<id.length();i++){
char c=id.charAt(i);
if(c<='9'|| c<='0')
return false;
}
return true;
}
public boolean isCapital(String FN){
char c=FN.charAt(0);
if(c>='A'&& c<='Z')
return true;
return false;
}
public static void main (String[] args) {
new program();
}
}