我搜索谷歌回答我的问题并找到它,但我不知道如何使用它。 Q1。如何将图片添加到我的程序和文本中。 Q2。当我打开新的时候我怎么能关闭旧窗户(我读到关于dispole和setVisiable,但我不能这样做)。 我的计划:
public class Main extends JFrame implements ActionListener {
public static void main (String[] args){
new Main().setVisible(true);
}
private static String[] args; // OTWORZ inny program
private Main(){
super("PROJEKT"); // tytuł okna
setSize(600,600); // rozmiar okna
setResizable(false); // blokuj powiększenie manualne okna
setDefaultCloseOperation(EXIT_ON_CLOSE); // na krzyzuku zamknie
Toolkit zestaw = Toolkit.getDefaultToolkit(); // get defaulttoolkit , zestaw który pobierze
Dimension rozmiarEkranu = zestaw.getScreenSize(); // rozdzielczosc ekranu a nastepnie
int wysEkranu = rozmiarEkranu.height; // wstawi otworzy okno na środku
int szerEkranu = rozmiarEkranu.width;
// umiesc ramke na srodku ekranu i dodaj tytuł
setSize(szerEkranu / 2, wysEkranu / 2);
setLocation(szerEkranu / 4, wysEkranu / 4);
setLayout (new BorderLayout());
/*
* FlowLayout
* GridBagLayout
* GridLayout
* BorderLayout
*/
JButton klawisz = new JButton ("START");
klawisz.addActionListener (new Action1());
add(klawisz, BorderLayout.SOUTH);
JMenuBar bar = new JMenuBar(); // Górne MENU
JMenu file = new JMenu("Plik"); // wstaw PLIK do menu
JMenuItem close = new JMenuItem("Zamknij"); // do pliku wstaw zamknij
close.addActionListener(this);
file.addSeparator(); // wstaw przerwe
file.add(close);
bar.add(file);
setJMenuBar (bar);
}
static class Action1 implements ActionListener{
public void actionPerformed(ActionEvent e) {
Menu.main(args); // otwiera inny program
new Main().setVisible(false); // HERE I DONT KNOW HOW TO CLOSE OLD WINDOW
}
}
@Override
public void actionPerformed(ActionEvent e) {
String name = e.getActionCommand();
if(name.equals("Zamknij")) { // zamknij program jak wcisne przycisk zamknij
System.exit(0);
}
}
}
答案 0 :(得分:2)
1)不要为新映像创建新的JFrame
,不要这样做,那些containers
存在于内存中,直到当前的JVM实例存在
2)看CardLayout,然后你就不需要类似的东西了
答案 1 :(得分:2)
您的问题是您在Main类的新实例上调用setVisible(false)
,并且此实例不是当前正在显示的实例。要回答您的直接问题,您需要在Main的当前实例上调用setVisible(false)
,然后使用Main.this:
Main.this.setVisible(false);
但是说了这句话,我和mKorbel(1+给他),你甚至不应该这样做,因为它会带来丑陋的用户体验,而是应该交换 view < / em>使用CardLayout。