Swing 如何以编程方式关闭 JPanel [英] Swing how to close JPanel programmatically
问题描述
我的主类扩展了 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屋!