Не выводится JPanel во фрейме
Выдает пустое окно, хотя по задумке должны появиться кнопки и панель, в чем проблема? Все классы проекта работают исправно.
public class MainFrame implements ActionListener
{
String directoryName = "C:/";
String fileName = "";
File curFile;//ссылка на текущий файл
static JFrame frame;
//JPanel pMain;//ссылка на главную панель фрейма
Container pMain;
JTable VIS_TABLE;//ссылка на визуальный компонент для вывода бд
EditPanel editPanel;//ссылка на панель инструментов редактирования
ViewPanel viewPanel;//ссылка на панель инструментов просмотра
JLabel jFileName;//метка для вывода имени файла таблицы
javax.swing.filechooser.FileFilter filter;
static JLabel MSG;//метка для вывода сообщений в нижней части окна
java.util.List<String> LINES;//ссылка на список сообщений для "справки"
MainFrame mainFrame;
static String helpArr1 = " ";
static String helpArr2 = " ";
public MainFrame(){
Global.table = new ResultGroup();
Global.results = new ArrayList<Result>();
Global.tableModel = new ResultTableModel(Global.results);
Global.start = 0;
Global.end = 0;
Global.mainFrame = mainFrame;
VIS_TABLE = new JTable(Global.tableModel);
JScrollPane scrtable = new JScrollPane(VIS_TABLE);//JScrollPane не ползунок!(а панель с возможностью перемещения по компоненту)
VIS_TABLE.setPreferredScrollableViewportSize(new Dimension(250, 100));//размер панели
viewPanel = new ViewPanel();
editPanel = new EditPanel();
MenuIS menu = new MenuIS();
pMain = new Container();
pMain.add(menu.getJMenu(), BorderLayout.NORTH);
pMain.add(editPanel, BorderLayout.SOUTH);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.add(pMain, BorderLayout.CENTER);
frame.setVisible(true);
}
public class Main
{
public static void Main(){
MainFrame mainFrame = new MainFrame();
mainFrame.OpenFile();
}
}
Ответы (1 шт):
Автор решения: Михаил Ребров
→ Ссылка
Как минимум стоило бы добавить менеджер компоновки/расположения для панели
Менеджеры компоновки отвечают за то как и где будут будут располагаться и отрисовываться компоненты вашей формы.
Поэтому фрейм и не отображает ничего: он не знает где и как.
Для примера, BoxLayout просто располагает компоненты друг за другом в вертикальном либо горизонтальном положении:
pMain.setLayout(new BoxLayout(pMain, BoxLayout.Y_AXIS));
В коде:
public class MainFrame implements ActionListener
{
String directoryName = "C:/";
String fileName = "";
File curFile;//ссылка на текущий файл
static JFrame frame;
//JPanel pMain;//ссылка на главную панель фрейма
Container pMain;
JTable VIS_TABLE;//ссылка на визуальный компонент для вывода бд
EditPanel editPanel;//ссылка на панель инструментов редактирования
ViewPanel viewPanel;//ссылка на панель инструментов просмотра
JLabel jFileName;//метка для вывода имени файла таблицы
javax.swing.filechooser.FileFilter filter;
static JLabel MSG;//метка для вывода сообщений в нижней части окна
java.util.List<String> LINES;//ссылка на список сообщений для "справки"
MainFrame mainFrame;
static String helpArr1 = " ";
static String helpArr2 = " ";
public MainFrame(){
Global.table = new ResultGroup();
Global.results = new ArrayList<Result>();
Global.tableModel = new ResultTableModel(Global.results);
Global.start = 0;
Global.end = 0;
Global.mainFrame = mainFrame;
VIS_TABLE = new JTable(Global.tableModel);
JScrollPane scrtable = new JScrollPane(VIS_TABLE);//JScrollPane не ползунок!(а панель с возможностью перемещения по компоненту)
VIS_TABLE.setPreferredScrollableViewportSize(new Dimension(250, 100));//размер панели
viewPanel = new ViewPanel();
editPanel = new EditPanel();
MenuIS menu = new MenuIS();
pMain = new Container();
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
pMain.setLayout(new BoxLayout(pMain, BoxLayout.Y_AXIS));
// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
pMain.add(menu.getJMenu(), BorderLayout.NORTH);
pMain.add(editPanel, BorderLayout.SOUTH);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.add(pMain, BorderLayout.CENTER);
frame.setVisible(true);
}
public class Main
{
public static void Main(){
MainFrame mainFrame = new MainFrame();
mainFrame.OpenFile();
}
}
Ссылки:
- Использование менеджеров компоновки [документация Oracle]
- Swing Layouts [статья на портале java online]
- Примеры на quizful