Java中在复选按钮监听事件中加入一个表格并打印数据库?

如图所示,给了一个JComboBox并且设置了一个ActionListener监听事件,如何把表格加入进去并添加数据库内容我用的是Access数据库。... 如图所示,给了一个JComboBox并且设置了一个ActionListener监听事件,如何把表格加入进去并添加数据库内容我用的是Access数据库。 展开
 我来答
知识阅历积累历程

推荐于2016-11-07 · 影视爱好者、游戏达人、IT 男
知识阅历积累历程
采纳数:10965 获赞数:6547

向TA提问 私信TA
展开全部

首先不是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赋值。
}
}
JulioHu706
2014-05-17 · TA获得超过653个赞
知道小有建树答主
回答量:789
采纳率:0%
帮助的人:434万
展开全部
这个你得先解析这个表格的内容,再按照数据库的格式插入数据库。如果你的是excel表格,那就很好办,网上一堆的列子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式