【问题标题】:Using two Frames in a GUI在 GUI 中使用两个框架
【发布时间】:2013-12-03 14:43:10
【问题描述】:

我正在开发一个有点像菜单来控制装配线的 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。谢谢大家。

【问题讨论】:

  • 你应该重新考虑你的设计。通常,每个应用程序只需要一个 JFrame。在java中有更好的方法来切换屏幕。

标签: java swing user-interface


【解决方案1】:

你可以这样做

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(){
        }
    }
}

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 2011-01-23
    • 2010-11-13
    • 1970-01-01
    • 2011-03-08
    • 2012-03-07
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多