[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00259] インスタンスの処理について
お世話になります。横山と申します。
たびたびすみません。
既出事項だと思うんですが、
ネット検索や書籍、いくつかのサンプルををあさってもなかなか
自分が行いたいことと同様の記述が見つからず、
投稿に至りました。すみません。
環境は
win2000
j2sdk1.4.01です。
行いたいことは
newによって生成されたインスタンスを消去したい。あるいは
コンストラクタを初期化する方法ということになると思います。
具体的にはJFrameを継承したSwingというクラスを作成し、
そのクラスにはボタンを一つ配置しております。
そのボタンをクリックすると新たにJFrameを継承した
Dataクラスのウィンドウが表示されます。
Dataクラスのウィンドウにはテキストフィールドと
終了というボタンが配置してあります。
このDataクラスのウィンドウをウィンドウの右上すみにあるXボタンあるいは
終了ボタンを押して、このDataクラスのウィンドウだけ消去したいのです。
しかし、現在私の作成した方法ではwindowの表示/非表示となります。
というのも
テキストフィールドに入力した文字列がウィンドウを消して
表示させたときに入力された状態で表示されます。
テキストフィールドにいれた値をウィンドウを消したときに
消去させる、newするときに初期化できればよいとおもうのですが
その方法が不明でございまして
できましたらアドバイスをいただけたら幸いであります。
私が記述したソースコードを記述しております。
大変見苦しいかと思いますがよろしくお願いします。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Swing extends JFrame{
public static void main(String args[]){
Swing swing = new Swing();
swing.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent event){
System.exit(0);
}
});
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = swing.getSize();
if(screenSize.width-frameSize.width<0){
screenSize.width=frameSize.width;
}
if(screenSize.height-frameSize.height<0){
screenSize.height=frameSize.height;
}
swing.setLocation(screenSize.width-frameSize.width,0);
swing.setVisible(true);
}
Swing(){
setTitle("アプリケーション");
setSize(400,300);
setResizable(false);
JPanel panel = new JPanel();
JButton button = new JButton("ボタン");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
if(data == null)
data = new Data();
data.show();
}
});
panel.add(button);
Container content = getContentPane();
content.add(panel,BorderLayout.CENTER);
}
private Data data = null;
}
class Data extends JFrame{
public Data()
{
setTitle("表示");
setSize(WIDTH , HEIGHT);
setResizable(false);
setVisible(true);
show();
nameField = new JTextField(20);
JButton fin = new JButton("終了");
fin.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
// setVisible(false);
// setDefaultCloseOperation(EXIT_ON_CLOSE);
// dispose();
}
});
panel = new JPanel();
panel.add(fin);
Container contentPane = getContentPane();
contentPane.add(nameField,BorderLayout.NORTH);
contentPane.add(fin,BorderLayout.SOUTH);
}
public static final int WIDTH = 500;
public static final int HEIGHT = 200;
private JTextField nameField;
private JPanel panel;
}