package com.One_Work;/**
 * 工作日志
 */
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.ResultSet;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.Border;import com.OA.Dao.ResultSetTableModel;
import com.OA.Dao.dbsql;public class myJournal extends JInternalFrame {
private JTable table_show;
private JTextField Ttitle;
private JTextArea Tcontent;
private JTextField Tdate;
private JComboBox Jclass;
private ResultSetTableModel model;
private ResultSet rs;
private dbsql db;
private JPanel panel_show;
private JScrollPane scrollPane_show; public myJournal(String title, boolean a, boolean b, boolean c, boolean d) {
super(title, a, b, c, d);
getContentPane().setLayout(null);
setBounds(100, 100, 800, 600);
this.resizable = false;// 大小不可变 /**
 * 编辑
 */
final JPanel pane_edit = new JPanel();
pane_edit.setLayout(null);
pane_edit.setBounds(10, 340, 770, 215);
getContentPane().add(pane_edit); Border etched2 = BorderFactory.createEtchedBorder();
Border titled2 = BorderFactory.createTitledBorder(etched2, "日志编辑");
pane_edit.setBorder(titled2); final JLabel label = new JLabel();
label.setText("日志类型:");
label.setBounds(10, 31, 66, 18);
pane_edit.add(label); Jclass = new JComboBox();
Jclass.setModel(new DefaultComboBoxModel(new String[] { "工作日志",
"个人日志" })); Jclass.setBounds(71, 28, 85, 25);
pane_edit.add(Jclass); final JLabel label_1 = new JLabel();
label_1.setText("日   期:");
label_1.setBounds(180, 31, 66, 18);
pane_edit.add(label_1); Tdate = new JTextField();
Tdate.setBounds(229, 29, 137, 22);
pane_edit.add(Tdate); final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 55, 750, 114);
pane_edit.add(scrollPane_1); Tcontent = new JTextArea();
scrollPane_1.setViewportView(Tcontent); final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
add();
}
});
button.setText("添加");
button.setBounds(71, 175, 106, 28);
pane_edit.add(button); final JButton button_1 = new JButton();
button_1.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
edit();
}
});
button_1.setText("修改");
button_1.setBounds(235, 175, 106, 28);
pane_edit.add(button_1); final JButton button_2 = new JButton();
button_2.setText("删除");
button_2.setBounds(409, 175, 106, 28);
pane_edit.add(button_2); final JButton button_3 = new JButton();
button_3.setText("查询");
button_3.setBounds(586, 175, 106, 28);
pane_edit.add(button_3); Ttitle = new JTextField();
Ttitle.setBounds(466, 29, 206, 22);
pane_edit.add(Ttitle); final JLabel label_2 = new JLabel();
label_2.setText("标   题:");
label_2.setBounds(394, 31, 66, 18);
pane_edit.add(label_2); tableshow(); // 显示日志
} private void tableshow() {
db = new dbsql();
db.connect();
String sql = "Select 分类=Jlb,标题=Jtitle,内容=Jcontent,创建日期=Jdate from Journal order by JID desc";
rs = db.query(sql); model = new ResultSetTableModel(rs); panel_show = new JPanel();
panel_show.setLayout(new BorderLayout());
panel_show.setBounds(10, 10, 770, 324);
getContentPane().add(panel_show); Border etched = BorderFactory.createEtchedBorder();
Border titled = BorderFactory.createTitledBorder(etched, "日志浏览");
panel_show.setBorder(titled); scrollPane_show = new JScrollPane();
panel_show.add(scrollPane_show, BorderLayout.CENTER); table_show = new JTable(model);
table_show.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent arg0) {
int row = table_show.getSelectedRow(); // 获得当前选中的行号
Jclass.setSelectedItem(model.getValueAt(row, 0).toString());
Ttitle.setText(model.getValueAt(row, 1).toString()); // 标题
Tcontent.setText(model.getValueAt(row, 2).toString()); // 内容
Tdate.setText(model.getValueAt(row, 3).toString()); // 日期
}
});
scrollPane_show.setViewportView(table_show);
} /**
 * 新增日志
 */
private void add() {
String Clb = (String) Jclass.getSelectedItem();
String title = Ttitle.getText();
String d = Tdate.getText();
String content = Tcontent.getText();
dbsql db = new dbsql();
db.connect();
String sql = "insert into Journal (Jtitle,Jlb,Jdate,Jcontent) values('"
+ title + "','" + Clb + "','" + d + "','" + content + "')";
db.update(sql);
db.close();
getContentPane().remove(panel_show); // 移除当前面板
tableshow(); // 调用显示日志
}}
红色部分就是那个下拉框,其他各项都会随着选择表格的不同行而动态变化,如何解决?

解决方案 »

  1.   

    很意外的结果,没人会想到是数据库导致了这个问题,后来查到了数据库的字段长度设置上,与这个程序下拉框对应的那个字段长度设置设的大了点,按中文4个字,长度设为8,但最初设计时没在意,并且在数据库直接插入了测试值,虽然内容相同,但有一些看不见的空格(字段长度所致),但在Jcombox中读取的字段值必须能与其完全匹配(长度,内容完全一致)才算有效,我在bug调试中看到过读取的值确实没错,但是却疏忽了隐含的空格,呵呵.但反过来,从程序插入值到数据库中后,读取的值是正常的,能达到效果,归结一下,还是一个匹配问题.