У меня проблема с Swing. У меня есть JFrame
под названием FrameMain
. Внутри это JPanel
под названием panelChoices
.Управление другим классом из другого класса
Когда FrameMain
называется/создан, он заполняет panelChoices
объект с рядом PanelEntries
объектов, что является JPanel
с рядом JButton
с в нем (это другой класс, который я написал).
То, что я хочу сделать, когда я нажимаю на одну из кнопок внутри PanelEntries
объекта, я хочу уничтожить/удалить FrameMain
, наряду с остальной частью него компонентов (в том числе PanelEntries
объекта, который содержит JButton
).
Я попытался с помощью super
, но он возвращает JPanel
(в PanelEntries
объект), который держит JButton
и не FrameMain
, что держит их вместе. Как я могу это достичь?
EDIT: Кажется, что я недостаточно ясен, так что вот немного больше информации из моей работы. У меня нет фактического кода прямо сейчас, потому что я на другой машине, но надеюсь, что это поможет уточнить мой вопрос.
public class FrameMain() {
private JFrame frameMain;
private JPanel panelChoices;
public FrameMain(args) {
createGUI();
loadData();
}
private void createGUI() {
JFrame frameMain = new JFrame();
JPanel panelChoices = new JPanel(new GridLayout(1,1));
frameMain.add(panel);
// removed formatting and other design codes since they are not important.
pack();
}
private void loadData() {
boolean available;
for (int i = 1; i <= 10; i++) {
// do some if/else and give value to boolean available
PanelEntries panel = new PanelEntries(i, available);
frameMain.add(panel);
// more code here to handle data.
}
}
}
public class PanelEntries() extends JPanel {
public PanelEntries(int num, boolean avb) {
JButton button = new JButton("Button Number " + num);
button.setEnabled(avb);
add(button);
// add action listener to created button so that it calls 'nextScreen()' when clicked.
// more code
pack();
}
private void nextScreen() {
// destroy/dispose MainFrame here.
// See Notes.
AnotherFrame anotherFrame = new AnotherFrame();
}
}
Примечания:
- Все классы в их собственном
.java
файле. - Мне нужно знать , как распоряжаться
FrameMain
с помощью кнопки внутри объектаPanelEntries
объекта, а не просто располагать JFrame.
Можете ли вы предоставить отрывок из вашего кода. Я думаю, это было бы более понятно, чем стена текста – fyr
Похоже, вы пытаетесь «выйти» из приложения. Это верно? –
Что делает 'super' в' JPanel'? Возвращает ли он «FrameMain»? 'super.dothis()' для запуска 'dothis()' в 'JPanel'. Тогда 'super.dothat()' в 'Jpanel' должен дать вам то, что вам нужно. – abhinav