во frame2? Если вызывать его в main то все ок, а если через другой констректор то он просто пустой висит.
package org.example;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
public class Frame extends JFrame {
public Frame() throws HeadlessException, InterruptedException, IOException {
JFrame progressFrame = new JFrame();
progressFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
progressFrame.setSize(500, 500);
progressFrame.setLayout(new GridLayout());
progressFrame.setTitle("Scanning");
Clas clas = new Clas();
clas.getFrame();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLayout(new GridLayout());
frame.setTitle("Frame");
JPanel mainPanel = new JPanel();
mainPanel.setBackground(Color.BLACK);
mainPanel.setLayout(null); // устанавливаем для панели panel1 BorderLayout
JPanel infoPanel = new JPanel();
infoPanel.setBackground(Color.WHITE);
infoPanel.setBounds(10,10,300,100);
infoPanel.setLayout(null);
JPanel buttonsPanel1 = new JPanel();
buttonsPanel1.setBackground(Color.green);
buttonsPanel1.setBounds(10, 120, 480, 200);
buttonsPanel1.setLayout(null);
JButton button1 = new JButton();
button1.setBackground(Color.BLACK);
button1.setBounds(10,10,30,30);
buttonsPanel1.add(button1);
JPanel buttonsPanel2 = new JPanel();
buttonsPanel2.setBackground(Color.yellow);
buttonsPanel2.setBounds(10, 120, 480, 200);
String[] panels = {"panel1", "panel2"};
JComboBox<String> comboBox = new JComboBox<>(panels);
comboBox.setBackground(Color.magenta);
comboBox.setBounds(10,400, 50,20);
CardLayout cardLayout = new CardLayout();
JPanel cardPanel = new JPanel(cardLayout);
cardPanel.setBackground(Color.WHITE);
cardPanel.setBounds(10, 120, 480, 200);
cardPanel.add(buttonsPanel1, "panel1");
cardPanel.add(buttonsPanel2, "panel2");
comboBox.addActionListener(e -> {
String select = (String) comboBox.getSelectedItem();
cardLayout.show(cardPanel, select.toLowerCase());
});
mainPanel.add(infoPanel);
mainPanel.add(cardPanel);
mainPanel.add(comboBox);
frame.add(mainPanel);
frame.setVisible(true);
}
public static void main(String[] args) throws IOException, InterruptedException {
SwingUtilities.invokeLater(() -> {
try {
new Frame();
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
});
}
}
package org.example;
import javax.swing.*;
import java.awt.*;
public class Clas {
public Clas() {
}
public void getFrame() throws InterruptedException {
JFrame frame2 = new JFrame();
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setSize(200, 100);
frame2.setLocationRelativeTo(null); // Чтобы окно появлялось по центру экрана
frame2.setTitle("Loading");
JPanel panel = new JPanel(new BorderLayout());
JProgressBar progressBar = new JProgressBar(0, 20);
progressBar.setValue(0);
progressBar.setStringPainted(true);
panel.add(progressBar, BorderLayout.CENTER);
frame2.add(panel);
frame2.pack();
frame2.setVisible(true);
for (int i = 0; i < 20; i++) {
Thread.sleep(300);
System.out.println(i);
progressBar.setValue(i + 1);
}
frame2.dispose(); // Закрываем окно с прогресс-баром
}
}
Твою простыню вряд ли кто-то будет читать. Pastebin.com
Обсуждают сегодня