java - 将图片添加到 SUPER 并关闭旧窗口以打开新窗口

标签 java swing

我在谷歌上搜索我的问题的答案并找到了它,但我不知道如何使用它。 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);

        }

    }
}

最佳答案

1) 不要为新图像创建新的 JFrame,不要这样做,这些容器 会一直存在于内存中,直到当前 JVM 实例存在

2) 看看CardLayout ,那么你永远不需要类似的东西

关于java - 将图片添加到 SUPER 并关闭旧窗口以打开新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779737/

相关文章:

java - 具有多个框架的 GUI

java - 在面板中设置图像图标

java - Ubuntu 14.04,无法将类打包到 'jar'文件中

java - CompletableFuture allof(..).join() 与 CompletableFuture.join()

java - 在更新的 4.1 版本中对 Singleton 类使用双重锁定时,Sonarlint 在 volatile 对象引用上给出错误

java - 在调整窗口大小之前,ScrollPane 不会显示

java - 未设置 JPanel 大小

java - 了解快速排序语法

java - 如何将带有逗号分隔值的字符串从表拆分为 2 个文本字段?

java - JPanel 不允许定位组件