[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00252] ウィンドウ表示の制限について
お世話になります。横山と申します。
現在swingを用いてのGUIアプリを作成して
javaの勉強をしております。
ボタンを一つ配置したSwingというクラスを作成しまして
そのボタンをクリックするとDataクラスが呼ばれて
さらにWindowが表示されるようなものを作成しました。
現在はこのボタンを何度もクリックすると
Dataクラスのウィンドウがいくつも表示されてしまいます。
このSwingクラスで作成したWindowのボタンから表示される
Dataクラスのウィンドウを一つだけ表示されるようにしたいのです。
これはどのようにしたら実現できるのでしょうか?
誠に恐れ入りますが、アドバイスをいただければ幸いであります。
下記に見苦しいと思うのですが作成したソースコード(簡略したもの)を
記述しております。
よろしくお願いします。
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().getSc
reenSize();
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);
JPanel panel = new JPanel();
JButton button = new JButton("ボタン");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
Data data = new Data();
}
});
panel.add(button);
Container content = getContentPane();
content.add(panel);
}
}
class Data extends JFrame{
public Data()
{
setTitle("表示");
setSize(WIDTH , HEIGHT);
setResizable(false);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// show();
JPanel buttonPanel = new JPanel();
JButton list = new JButton("表示");
buttonPanel.add(list);
JButton insert = new JButton("追加");
buttonPanel.add(insert);
Container contentPane = getContentPane();
contentPane.add(buttonPanel,BorderLayout.CENTER);
}
public static final int WIDTH = 500;
public static final int HEIGHT = 200;
}