[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;
}