У меня есть class main extends jframe
, у него есть кнопка, которая вызывает/показывает другой класс, который расширяет jdialog
.Как вызвать активный кадр, который уже существует из другого класса, который расширяет JDialog, а затем удалить весь его компонент?
Если кнопка из jdialog
запущена, она будет удалять этот диалог и удалит весь компонент jframe
, а затем добавит его в новый jpanel
.
Что мне делать?
Вот мой новый сломанный код:
public class mainz extends JFrame{
mainz(){
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JToolBar r = new JToolBar();
r.add(Box.createHorizontalGlue());
add(r, BorderLayout.NORTH);
JButton n = new JButton();
r.add(n, BorderLayout.EAST);
n.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
show();
}
});
}
public void show(){
dialogz d = new dialogz(this);
d.setVisible(true);
}
public void lastHope(){
getContentPane().removeAll();
getContentPane().validate();
getContentPane().repaint();
}
public static void main (String[]args){
new mainz().setExtendedState(MAXIMIZED_BOTH);
}
}
public class dialogz extends JDialog{
public dialogz(final mainz owner) {
setSize(300, 300);
JButton n = new JButton("execute");
add(n);
final JFrame ew = (JFrame)super.getOwner();// <<
n.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
dispose();
//owner.lastHope;
ew.removeAll();// <<
ew.validate();// <<
ew.repaint();// <<
}
});
}
void yes(){
getOwner().removeAll();
getOwner().validate();
getOwner().repaint();
}
}
Я знаю, что могу предотвратить мой main
класс от расширения jframe
, и вызвать его из основной вместо , но я хочу сделать это так ...
Пожалуйста, помогите мне ... TT
Извините за мой английский, я из далекой страны ~ ~»
обновление: ошибка
java.lang.ClassCastException: javax. swing.SwingUtilities $ SharedOwnerFrame не может быть приведен к javax.swing.JFrame
это будет сделано с удаления строки, которые содержат // < < затем вызвать lastHope();
, но я думаю, что есть еще один способ получить, что существующее JFrame в RemoveAll (литье его первым или что-то ~ ~»)
removeAll() метод - это то, что вы ищете – slackmart
@sgmart: кратко глядя на его код выше, похоже, что он уже знает об этом методе. –
Хорошо, спасибо, это правильно. Я работаю над решением! – slackmart