を持っています。class main extends jframe
拡張する別のクラスを /shows するボタンがあります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にする別の方法があると思います(最初にキャストするか、何か~、~")