我的主類擴展了JPanel,我在這個面板上創建了一個表和一個按鈕。現在我想在用戶按下時關閉這個面板。在互聯網上關閉的例子是關於JFrame的。 JPanel的解決方案?Swing如何以編程方式關閉JPanel
- 有一個面板
- 在面板裏有一張桌子和一個按鈕
- 我添加一個動作監聽按鈕
- 我要關閉面板,如果用戶按下按鈕
這是我的代碼現在我想,當用戶按下btnDelete然後將其關閉面板
公共類ListUsers擴展JPanel {
ResultSet rs;ClientDAO dao; JScrollPane scrollPane; JTable表; 對象columnId;
公共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)' – forgivenson 2014-11-05 16:38:54
我setVisible(false)但面板仍然可見只是面板上的項目消失。 – 2014-11-05 16:46:17
也許你應該向我們提供一些產生問題的代碼。編輯您的問題並將其添加到那裏。沒有更多細節,很難進一步提供幫助。 – forgivenson 2014-11-05 16:49:56