Java中在复选按钮监听事件中加入一个表格并打印数据库?
如图所示,给了一个JComboBox并且设置了一个ActionListener监听事件,如何把表格加入进去并添加数据库内容我用的是Access数据库。...
如图所示,给了一个JComboBox并且设置了一个ActionListener监听事件,如何把表格加入进去并添加数据库内容我用的是Access数据库。
展开
2个回答
展开全部
首先不是ActionListener事件。而是ItemListener 事件。读Access那块自己弄。其他基本都解决了。里面还可优化,只供参考。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class BOOKS extends JFrame implements ItemListener {
private String names[] = {"古典文学","玄幻小说","悬疑小说","科幻小说","言情小说"};
JComboBox jcb = new JComboBox(names);
public static JTable all = new JTable();
public static DefaultTableModel myTable = new DefaultTableModel();
JScrollPane jScrollPane = new JScrollPane();
public BOOKS()
{
super("图书大全");
this.setResizable(false);
this.setVisible(true);
this.setBounds(new Rectangle(400,50,500,600));
jcb.addItemListener(this);//要加上事件。
this.add(jcb, BorderLayout.NORTH);
this.add(jScrollPane, java.awt.BorderLayout.CENTER);
jScrollPane.getViewport().add(all);
all.setModel(myTable);
all.setRowHeight(25);//设置高度
all.getTableHeader().setPreferredSize(new Dimension(1,25));
all.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
public void itemStateChanged(ItemEvent e) {
String[] header = {"书籍编号", "书籍名称", "作者"};
Object[][] data = new Object[5][header.length];//5为数据库查出的总数
if(e.getStateChange() == ItemEvent.SELECTED && jcb.getSelectedItem().toString() == "古典文学"){
for (int i =0; i < 5; i++) {
// type tbean = (type) tlist.get(i);//java bean
// data[i][0]=tbean.getTid();
// data[i][1]=i+1;
// data[i][2]=tbean.getTid();
// data[i][3]=tbean.getTname();
data[i][0] = i+1;
data[i][1] = "古典文学";
data[i][2] = "古典文学";
}
}
else if(e.getStateChange() == ItemEvent.SELECTED && jcb.getSelectedItem().toString() == "玄幻小说"){
for (int i =0; i < 5; i++) {
data[i][0] = i+1;
data[i][1] = "玄幻小说";
data[i][2] = "玄幻小说";
}
}
else if(e.getStateChange() == ItemEvent.SELECTED && jcb.getSelectedItem().toString() == "悬疑小说"){
for (int i =0; i < 5; i++) {
data[i][0] = i+1;
data[i][1] = "悬疑小说";
data[i][2] = "悬疑小说";
}
}
else if(e.getStateChange() == ItemEvent.SELECTED && jcb.getSelectedItem().toString() == "科幻小说"){
for (int i =0; i < 5; i++) {
data[i][0] = i+1;
data[i][1] = "科幻小说";
data[i][2] = "科幻小说";
}
}
else if(e.getStateChange() == ItemEvent.SELECTED && jcb.getSelectedItem().toString() == "言情小说"){
for (int i =0; i < 5; i++) {
data[i][0] = i+1;
data[i][1] = "言情小说";
data[i][2] = "言情小说";
}
}
myTable.setDataVector(data, header); //加载数据
}
public static void main(String[] args) {
BOOKS frame=new BOOKS();
frame.setSize(1000,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
更多追问追答
追问
给点提示吧,数据库打印到表格实在是不会啊。
追答
public void itemStateChanged(ItemEvent e) {
String[] header = {"书籍编号", "书籍名称", "作者"};
Object[][] data = null;
if(e.getStateChange() == ItemEvent.SELECTED && jcb.getSelectedItem().toString() == "古典文学"){
//读取数据,比如:封装一个方法:通过类型ID返回书籍列表,方法名:getList(int .....)
Book book_bean = getList(1);//返回java bean
data=new Object[book_bean .size()][header.length];//5为数据库查出的总数
for(int i=0;i<book_bean.size();i++)
{
data[][].....//data赋值。
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询