1

我正在使用 Java 中的 GUI,并且我已经在JDialogs另一个之上做了几个打开。我试图创建一个JTabbedPane并且我成功了。但是,我必须JTabbedPaneJFrame. 我试过了,但JPanel打开都是空白的。

其次,当我使用JFrame(所以新的JTabbedPane开始运行)相同的框架出现在前一个之后。

所以我的问题是:

  • 如何在 中创建选项卡式窗格JDialog
  • 如果我使用 ,如何使JTabbedPane出现在所有其他框架的前面JFrame

这是我的代码,JFrame当我点击JButton以前的JDialog

public class AddComponents extends JDialog {    

    private String[] arr = {"House", "Microgrid", "CSP", "VPP"};

     public AddComponents(JDialog pai, String titulo)
    {
        super(pai, titulo);
        frame = new JFrame(titulo);

        // Display the window.

        frame.setSize(500, 300);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        // set grid layout for the frame

        frame.getContentPane().setLayout(new GridLayout(1, 1));


        tabbedPane = new JTabbedPane(JTabbedPane.TOP);
        pack();

        for (int i = 0; i < arr.length; i++) {
            String tmp = arr[i];
            tabbedPane.addTab(tmp, makePanel(tmp));


        } 

        frame.getContentPane().add(tabbedPane);
        frame.setMinimumSize(new Dimension(getWidth(), getHeight()));
        frame.setLocation(pai.getX() + 85, pai.getY() + 25);
        frame.setEnabled(true);


    }

    private JPanel makePanel(String text) {
        JPanel p = new JPanel();
        //p.setLayout(new GridLayout(0,1));
        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();


        if(text.equals("House"))
        { //CADA UM DOS ifs chama a class correspondente para criar o interface
          p1.setLayout(new GridLayout(4, 2));

          idLabel = new JLabel("Component ID:");
          idText = new JTextField(""); 
          p1.add(idLabel);
          p1.add(idText);



          maxUsageLabel = new JLabel("Max usage per hour:");
          maxUsageText = new JTextField("");
          p1.add(maxUsageLabel);
          p1.add(maxUsageText);

          minUsageLabel = new JLabel("Min usage per hour:");
          minUsageText = new JTextField("");
          p1.add(minUsageLabel);
          p1.add(minUsageText);

          averageUsageLabel = new JLabel("Average usage per hour:");
          averageUsageText = new JTextField("");
          p1.add(averageUsageLabel);
          p1.add(averageUsageText);

       //   emptyLabel = new JLabel("");
          saveButton = new JButton("Save");
         // p.add(emptyLabel);
          p2.add(saveButton);

          p.add(p1);
          p.add(p2);

        }
        if(text.equals("Microgrid"))
        {
            p.setLayout(new GridLayout(5, 2));
            outroLabel = new JLabel(" Microgrid");
            p.add(outroLabel);


        }
        if(text.equals("VPP"))
        {
            p.setLayout(new GridLayout(5, 2));
            outroLabel = new JLabel(" VPP");
            p.add(outroLabel);
        }
        if(text.equals("CSP"))
        {
            p.setLayout(new GridLayout(5, 2));
            outroLabel = new JLabel(" CSP");
            p.add(outroLabel);
        }

        return p;

    }


}
4

2 回答 2

1

"How can I create the tabbed pane in a JDialog ?"

  • 就像你将它添加到 JFrame 一样。这里基本上没有任何区别。

"How do I make the JTabbedPane appear in front of all other frames, if I use JFrame ?"

  • 你没有。如果要在其他窗口上方显示一个窗口,请使用 JDialog。
于 2013-04-26T18:14:29.037 回答
1

创建 JDialog 使用:

 final JDialog dialog = new JDialog();
 dialog.add(tabbedPane);
 dialog.setVisible(true);

Java 应用程序通常只有一个 JFrame,所以没有人担心 Z 顺序。如果你喜欢它们,你可以使用JInternalFrame。这是教程。但是,您可以改用对话框。

于 2013-04-26T18:19:04.947 回答