gpt4 book ai didi

java - 数据未出现在 JTable 中

转载 作者:行者123 更新时间:2023-12-01 19:24:50 27 4
gpt4 key购买 nike

我是 Jtable 的新手,我需要一些帮助。我想编写以下代码来显示表中队列的数据

问题:数据没有出现在表格中

我不知道出了什么问题!!

我需要帮助,请

源代码:

//类(class)学生

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;
}
}

//类节点

public class node {
student info;
node link;
public node(student st,node next){
this.info = info;
this.link = link;
}

}

//类队列

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;
}

}

//类程序

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();
}
}

最佳答案

有两件事:

  1. 请使用大写字母作为类名的开头

  2. 自定义 TableModel 可能是个好主意。不要从头开始实现 TableModel,而是扩展 AbstractTableModel,因为它会处理所有事件和监听器方面,并且会为您节省大量时间。

关于java - 数据未出现在 JTable 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1846863/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com