Я работаю с графическим интерфейсом на Java, и я сделал несколько JDialogs
, открывающихся один над другим. Я попытался создать JTabbedPane
, и у меня все получилось. Однако я должен сделать JTabbedPane
в JFrame
. Я пробовал, но JPanel
открывает все пустое.Создание JTabbedPane в JDialog и создание фрейма
Во-вторых, когда я использую 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;
}
}
проблема в том, что если я использую JDialog, панель с вкладками отображается пустым. – SaintLike
@EduardoRocha: тогда вы делаете что-то основное неправильно. Пожалуйста, покажите нам, как вы пытаетесь это сделать, предпочтительно в [sscce] (http://sscce.org), маленькой программе, которую мы можем скомпилировать и запустить, и которая показывает вашу проблему. –
@EduardoRocha: Вы изменили макет по умолчанию для диалога? –