Swing 如何以编程方式关闭 JPanel [英] Swing how to close JPanel programmatically

查看:44
本文介绍了Swing 如何以编程方式关闭 JPanel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的主类扩展了 JPanel,我在这个面板上创建了一个表格和一个按钮.现在我想在用户按下它时关闭这个面板.互联网上的关闭示例是关于 JFrame 的.JPanel 有解决方案吗?

My main class extends JPanel and I create a table and a button on this panel.Now I want to close this panel when the user press it.On the internet closing examples are about JFrame.Is there solution for JPanel?

  • 有一个面板
  • 面板上有一个表格和一个按钮
  • 我向按钮添加了一个动作侦听器
  • 如果用户按下按钮,我想关闭面板
  • 这是我现在想要的代码,当用户按下 btnDelete 然后关闭面板

  • There is a panel
  • On Panel there is a table and a button
  • I add an action listener to the button
  • I want to close panel if user press button
  • This is my code now I want when the user press the btnDelete then it close the panel

公共类 ListUsers 扩展 JPanel {

public class ListUsers extends JPanel {

结果集rs;ClientDAO dao;JScrollPane scrollPane;JTable 表;对象 columnId;

ResultSet rs; ClientDAO dao; JScrollPane scrollPane; JTable table; Object columnId;

public ListUsers() 抛出 SQLException {

public ListUsers() throws 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);

推荐答案

public void actionPerformed(ActionEvent e) {
  JComponent comp = (JComponent) e.getSource();
  Window win = SwingUtilities.getWindowAncestor(comp);
  win.dispose();
}

e.getSource():获取 Java Component

e.getSource(): Get Java Component

getWindowAncestor:返回Component

getWindowAncestor: Returns the first Window ancestor of Component

win.dispose():释放此使用的所有本机屏幕资源它的子组件,以及它所有的子组件.

win.dispose(): Releases all of the native screen resources used by this its subcomponents, and all of its owned children.

这篇关于Swing 如何以编程方式关闭 JPanel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆