【发布时间】:2015-01-01 22:44:20
【问题描述】:
我的主类扩展了 JPanel,我在这个面板上创建了一个表格和一个按钮。现在我想在用户按下它时关闭这个面板。在互联网上关闭示例是关于 JFrame。有 JPanel 的解决方案吗?
- 有一个面板
- 面板上有一个表格和一个按钮
- 我为按钮添加了一个动作监听器
- 如果用户按下按钮,我想关闭面板
-
这是我现在想要的代码,当用户按下 btnDelete 然后它关闭面板时
公共类 ListUsers 扩展 JPanel {
结果集 rs; 客户DAO dao; JScrollPane 滚动窗格; JTable表; 对象列 ID;
public ListUsers() 抛出 SQLException {
dao = new ClientDAO(); rs=dao.getUsers(); ResultSetMetaData md = rs.getMetaData(); int columnCount = md.getColumnCount(); Vector<String> columns = new Vector(columnCount); //store column names for(int i=1; i<=columnCount; i++) columns.add(md.getColumnName(i)); Vector data = new Vector(); Vector row; //store row data while(rs.next()) { row = new Vector(columnCount); for(int i=1; i<=columnCount; i++) { row.add(rs.getString(i)); } data.add(row); } table = new JTable(data, columns); table.setPreferredScrollableViewportSize(new Dimension(500, 70)); table.setFillsViewportHeight(true); table.setVisible(true); table.validate(); table.setEnabled(true); add(table); table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { final JDialog dialog = new JDialog(); dialog.setSize(300, 200); dialog.setLayout(null); columnId = table.getValueAt(table.getSelectedRow(),0); Integer no = new Integer(columnId.toString()); final int i =no.intValue(); String columnNo =columnId.toString(); String name = table.getValueAt(table.getSelectedRow(),1).toString(); String surname = table.getValueAt(table.getSelectedRow(),2).toString(); String gender = table.getValueAt(table.getSelectedRow(),3).toString(); String labelText ="<html>Name :<b>"+name+"</b><br>Surname :<b>"+surname+"</b><br>Gender :<b>"+gender+"</b></html>"; JLabel label=new JLabel(labelText); label.setVisible(true); label.setBounds(10, 10,300, 100); dialog.add(label); JButton btnUpdate= new JButton("Update"); btnUpdate.setVisible(true); btnUpdate.setBounds(10,100,100,35); JButton btnDelete= new JButton("Delete"); btnDelete.setVisible(true); btnDelete.setBounds(150,100,100,35); dialog.add(btnDelete); dialog.add(btnUpdate); btnUpdate.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialog.setVisible(false); } }); btnDelete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { dao.deleteUser(i); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } dialog.setVisible(false); setVisible(false); System.exit(0); } }); dialog.setVisible(true);
【问题讨论】:
-
你可以隐藏它。
setVisible(false) -
我 setVisible(false) 但是面板仍然可见,只是面板上的项目消失了。
-
也许您应该向我们提供一些产生问题的代码。编辑您的问题并将其添加到那里。没有更多细节,很难进一步提供帮助。
-
另外,您要处理面板吗?你要在同样的状态下再次打开它吗?
-
我的 ide 无法识别 dispose()