add加入组件之后调用
invalidate();
repaint();
方法
有时候可以在后面调用setVisible(true);
否则可能无法更新。
自己写的Java学生管理系统的查询功能可以参考一下
package 学生管理;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
class tab{
JTable table;
JPanel p=new JPanel(new BorderLayout());
String []tablehead= {"学号","姓名","专业","班级","性别"};
String [][]raw=new String[1][5];
public tab(String sno,String sname,String sspecialty,String sclazz,String ssex) {
raw[0][0]=sno;
raw[0][1]=sname;
raw[0][2]=sspecialty;
raw[0][3]=sclazz;
raw[0][4]=ssex;
table = new JTable(raw,tablehead);
table.setForeground(Color.BLACK); // 字体颜色
table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式
table.setSelectionForeground(Color.DARK_GRAY); // 选中后字体颜色
table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景
table.setGridColor(Color.gray); // 网格颜色
table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 设置表头名称字体样式
table.getTableHeader().setForeground(Color.RED); // 设置表头名称字体颜色
table.getTableHeader().setResizingAllowed(false); // 设置不允许手动改变列宽
table.getTableHeader().setReorderingAllowed(false); // 设置不允许拖动重新排序各列
table.setRowHeight(30); // 设置行高
table.setPreferredSize(new Dimension(400, 350));// 设置面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
p.add(table.getTableHeader(), BorderLayout.NORTH);
p.add(table, BorderLayout.SOUTH);
}
}
public class find {
JFrame m2=new JFrame("查询");
private JPanel findp=new JPanel();
private JTextField findt=new JTextField(20);
private JButton findb=new JButton("查询");
private JLabel findl=new JLabel("请输入学生学号");
tab temp=new tab("","","","","");
public find() {
File student=new File("E:\\java学生管理\\student.txt");
m2.add(findp);
findb.addActionListener(new ActionListener() {
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent e) {
if(e.getSource()==findb) {
String fi=findt.getText();
if(fi.equals("")) {
JOptionPane.showMessageDialog(m2, "学号为空,请输入学号");
}else {
try {
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(student));
HashMap<String,student> sh=new HashMap<String,student>();
sh=(HashMap<String,student>)ois.readObject();
ois.close();
int mark=0;
for (Map.Entry<String, student> item : sh.entrySet()) {
if(item.getValue().getNo().equals(fi)) {
mark=1;
m2.remove(temp.p);
temp=new tab(item.getValue().getNo(),item.getValue().getName(),item.getValue().getSpecialty(),item.getValue().getClazz(),item.getValue().getSex());
findt.setText("");
m2.add(temp.p);
m2.invalidate();
m2.repaint();
m2.setVisible(true);
break;
}
}
if(mark==0) {
JOptionPane.showMessageDialog(m2, "未找到该生信息");
findt.setText("");
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
}
}
});
findp.add(findl);
findp.add(findt);
findp.add(findb);
m2.add(temp.p);
m2.setLayout(new FlowLayout(FlowLayout.CENTER));
m2.setSize(500, 500);
m2.setVisible(true);
m2.setLocationRelativeTo(null);//将窗口显示在屏幕中央
// m2.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
这个没加main方法,自行加上吧
csdn这个貌似没法上传视频:跳转B站