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?
This is my code now I want when the user press the btnDelete then it close the panel
public class ListUsers extends JPanel {
ResultSet rs; ClientDAO dao; JScrollPane scrollPane; JTable table; Object columnId;
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);
If you want to close a JFrame, you could use the dispose() method.
You can close the frame programmatically by sending it the WINDOW_CLOSING event, like this: WindowEvent closingEvent = new WindowEvent(targetFrame, WindowEvent. WINDOW_CLOSING); Toolkit.
You can call like disableComponents(this); from within your JPanel.
DISPOSE_ON_CLOSE -- The frame will be closed and disposed but the application will not exit. JFrame. DO_NOTHING_ON_CLOSE -- The frame will be closed but not disposed and the application will not exit.
public void actionPerformed(ActionEvent e) {
JComponent comp = (JComponent) e.getSource();
Window win = SwingUtilities.getWindowAncestor(comp);
win.dispose();
}
e.getSource(): Get Java Component
getWindowAncestor: Returns the first Window
ancestor of Component
win.dispose(): Releases all of the native screen resources used by this its subcomponents, and all of its owned children.
If you want to 'close' a JPanel, you can hide it.
myPanel.setVisible(false);
And if/when you want to 'open' it again:
myPanel.setVisible(true);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With