JAVA求助关于JTable重复叠加Model的问题
以下是关键代码:privateJButtongetLookResult(){if(LookResult==null){LookResult=newJButton();Lo...
以下是关键代码:
private JButton getLookResult() {
if (LookResult == null) {
LookResult = new JButton();
LookResult.setText(" 查询结果 ");
LookResult.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LookResult_actionPerformed(e);
}
});
}
return LookResult;
}//此处创建一个按钮,添加事件
private void LookResult_actionPerformed(ActionEvent e) {
DataControl.CreatPO_LookResult();
}//事件处理方法
public static void CreatPO_LookResult() {
Connection conn;
String FLAG = null;
String[] title = { "审批编号", "返回消息", "采购订单编号", "创建状态" };
DefaultTableModel mm = new DefaultTableModel(title, 0); // 定义一个表格模板
String sql = "select * from CREAT_PO_INFORMATION";
try {
conn = ConnectManager.getOraConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String SHENPIID = rs.getString("SHENPIID");
String MESSAGE = rs.getString("MESSAGE");
String PO_NUM = rs.getString("PO_NUM");
if (rs.getString("FLAG").equals("Y")) {
FLAG = "订单创建成功";
} else {
FLAG = "订单创建失败";
}
String[] str_row = { SHENPIID, MESSAGE, PO_NUM, FLAG };
mm.addRow(str_row);// 添加在表模板中
}
CreatPO.getTable().setModel(mm);
CreatPO.getTable().addMouseListener(CreatPO.MouseListener());// 添加双击表格事件
close(stmt);
} catch (SQLException e) {
e.printStackTrace();
}
}//事件处理方法内容
public static MouseAdapter MouseListener() {// 鼠标事件监听
MouseListener = new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
// 是否左建双击
if (e.getClickCount() == 2
&& SwingUtilities.isLeftMouseButton(e)) {
String str = DataControl.CreatPO_getTable_Action();
getJTextArea1().setText(str);
JDialog dlg = getJDlgSetting();
dlg.show();
}
}
};
return MouseListener;
}
}//双击鼠标事件
具体异常如下,在点击查询按钮一次时候,双击表格可以正确弹出JDialog,但是此时再点击一次查询按钮,然后再双击表格就会连续两次弹出JDialog,点击三次按钮就弹出3个JDialog,以此类推,找不到错误原因,不知道在哪里重复调用了,请指教!
这是表格方法
public static JTable getTable1() {
if (table1 == null) {
String[] title = { "审批编号", "提报名称", "提报人", "提报时间", "状态" };
DefaultTableModel mm = new DefaultTableModel(title, 0); // 定义一个表的模板
table1 = new JTable(mm) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
}
return table1;
} 展开
private JButton getLookResult() {
if (LookResult == null) {
LookResult = new JButton();
LookResult.setText(" 查询结果 ");
LookResult.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LookResult_actionPerformed(e);
}
});
}
return LookResult;
}//此处创建一个按钮,添加事件
private void LookResult_actionPerformed(ActionEvent e) {
DataControl.CreatPO_LookResult();
}//事件处理方法
public static void CreatPO_LookResult() {
Connection conn;
String FLAG = null;
String[] title = { "审批编号", "返回消息", "采购订单编号", "创建状态" };
DefaultTableModel mm = new DefaultTableModel(title, 0); // 定义一个表格模板
String sql = "select * from CREAT_PO_INFORMATION";
try {
conn = ConnectManager.getOraConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String SHENPIID = rs.getString("SHENPIID");
String MESSAGE = rs.getString("MESSAGE");
String PO_NUM = rs.getString("PO_NUM");
if (rs.getString("FLAG").equals("Y")) {
FLAG = "订单创建成功";
} else {
FLAG = "订单创建失败";
}
String[] str_row = { SHENPIID, MESSAGE, PO_NUM, FLAG };
mm.addRow(str_row);// 添加在表模板中
}
CreatPO.getTable().setModel(mm);
CreatPO.getTable().addMouseListener(CreatPO.MouseListener());// 添加双击表格事件
close(stmt);
} catch (SQLException e) {
e.printStackTrace();
}
}//事件处理方法内容
public static MouseAdapter MouseListener() {// 鼠标事件监听
MouseListener = new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
// 是否左建双击
if (e.getClickCount() == 2
&& SwingUtilities.isLeftMouseButton(e)) {
String str = DataControl.CreatPO_getTable_Action();
getJTextArea1().setText(str);
JDialog dlg = getJDlgSetting();
dlg.show();
}
}
};
return MouseListener;
}
}//双击鼠标事件
具体异常如下,在点击查询按钮一次时候,双击表格可以正确弹出JDialog,但是此时再点击一次查询按钮,然后再双击表格就会连续两次弹出JDialog,点击三次按钮就弹出3个JDialog,以此类推,找不到错误原因,不知道在哪里重复调用了,请指教!
这是表格方法
public static JTable getTable1() {
if (table1 == null) {
String[] title = { "审批编号", "提报名称", "提报人", "提报时间", "状态" };
DefaultTableModel mm = new DefaultTableModel(title, 0); // 定义一个表的模板
table1 = new JTable(mm) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
}
return table1;
} 展开
若以下回答无法解决问题,邀请你更新回答
展开全部
哪来的查询按钮?
追问
private JButton getLookResult() {
if (LookResult == null) {
LookResult = new JButton();
LookResult.setText(" 查询结果 ");
LookResult.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LookResult_actionPerformed(e);
}
});
}
这个就是啊,不过我已经解决了。在事件处理的地方加一个判断就可以了。谢谢啦,50分送你
追答
thanks
最好在mouseclick 里监听鼠标双击
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询