在GUI中使用两个框架

时间:2013-12-03 14:43:10

标签: java swing user-interface

我正在开发一个类似于控制装配线的菜单的GUI。程序运行时,它会显示带有第一组按钮的窗口。单击按钮应该使该窗口消失,并且应该使用先前选择的菜单显示另一个窗口。如何在按钮上实施操作?两个菜单都在不同的类中,还有一个带有main函数的额外类,目前只创建新对象并将第一个窗口的可见性设置为true。

以下是两者:

主要的一个:

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class InfInd {

    public static void main(String[] args) {
        Cliente c = new Cliente();
        c.setVisible(true);
    }
}

第一个菜单:

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class Cliente extends JFrame implements ActionListener {
    public JLabel titulo;
    public JButton ordens;
    public JButton listaordens;
    public JButton stats;
    public JButton desc;
    public JButton sair;

    public Cliente() {
        titulo = new JLabel("Menu Cliente");
        ordens = new JButton ("Ordens");
        listaordens = new JButton("Lista Ordens");
        stats = new JButton ("Estatísticas");
        desc = new JButton ("Peças Descarregadas");
        sair = new JButton ("Sair");

        setLayout(null);

        Dimension size1 = titulo.getPreferredSize();
        Dimension size2 = ordens.getPreferredSize();
        Dimension size3 = listaordens.getPreferredSize();
        Dimension size4 = stats.getPreferredSize();
        Dimension size5 = desc.getPreferredSize();
        Dimension size6 = sair.getPreferredSize();

        titulo.setBounds(100, 50, size1.width, size1.height);
        ordens.setBounds(100, 100, size2.width, size2.height);
        listaordens.setBounds(100, 150, size3.width, size3.height);
        stats.setBounds(100, 200, size4.width, size4.height);
        desc.setBounds(100, 250, size5.width, size5.height);
        sair.setBounds(100, 300, size6.width, size6.height);

        sair.addActionListener(this);

        add(titulo);
        add(ordens);
        add(listaordens);
        add(stats);
        add(desc);
        add(sair);
        setSize(500, 500);
        setTitle("Teste");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void actionPerformed(ActionEvent out){
        System.exit(0);
    }
}

第二个菜单与此类似,只有不同的按钮名称。这个想法是,现在,只需点击“Ordens”按钮即可显示第二个菜单。对不起,这似乎很吵,但我昨天才开始使用Java GUI。谢谢大家。

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

public class MyFrame extends JFrame {
    private JButton jbt = new JButton("Open Window");
    private AnotherFrame jfrm = new AnotherFrame();    // another frame

    public MyFrame(){
        add(jbt);
        add(jfrm);  // add frame

        jbt.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jfrm.setVisibility(true);      // when button clicked, set
            }                                  // visibility for other frame true
        });
    }

    private AnotherFrame extends JFrame {
        public AnotherFrame(){
        }
    }
}