我有一个框架(main
)。有两个按钮:“项目”和“销售”。
当我单击按钮Items
时,它会打开一个框架(Items
)
我想当我点击按钮Sale
时,它应该关闭Items
并打开Sale
。
这是Items
帧:
public class Items extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Items frame = new Items();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
更新:-这是我的特卖班
public class Sale extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Sale frame = new Sale();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
答案 0 :(得分:0)
只需使用dispose()
方法关闭上一个Item JFrame。
salesframe.setVisible(true);
itemframe.dispose();
就您而言,我认为您还应该在按钮上添加一个ActionListener。
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
frameToClose.dispose();
}
});
答案 1 :(得分:0)
您应该.dispose();
按钮ActionListener
中的框架,由于要在类中扩展JFrame
,这意味着您.dispose();
实例本身。像这样:
public class Main extends JFrame {
public Main() {
Sale sale = new Sale();
Items item = new Items();
JButton btnSale = new JButton("Sale");
getContentPane().add(btnSale, BorderLayout.WEST);
JButton btnItems = new JButton("Items");
getContentPane().add(btnItems, BorderLayout.CENTER);
btnSale.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sale.setVisible(true);
if(item.isVisible()) {
item.dispose();
}
}
});
btnItems.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
item.setVisible(true);
if(sale.isVisible()) {
sale.dispose();
}
}
});
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main frame = new Main();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}