From window, to wind

趣味のゲームとJavaプログラムなどについて 適当に書き綴るブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Yes,Noボタンを表示し、ボタンで戻り値を制御するJDialog

まだたたき台ですが、基本形ができたのでとりあえずアップします。
JFileChooseのように使えることを目標としています。
クラス名はSimpleOptionPaneとしておきます。
またSimpleOptionPaneを継承したCustomOptionPaneを作ってみました。
おそらくはこのように使うのがよいと思います。
とりあえずプログラムらしいものにしたい。
SimpleOptionPane.png
CustomOptionPane.png
使い方

            public void actionPerformed(ActionEvent ae) {
                SimpleOptionPane sop = new SimpleOptionPane((Frame)null,"SimpleOptionPnae",true);
                int sop_action = sop.showOptionPane();
                if(sop_action==sop.Yes_value){
                    System.out.println("Yes");
                }else if(sop_action==sop.No_value){
                    System.out.println("No");
                }else if(sop_action==sop.Close_value){
                    System.out.println("Close");
                }
            }

            public void actionPerformed(ActionEvent ae) {
                CustomOptionPane cop = new CustomOptionPane((Frame)null,"CustomOptionPnae",true);
                int cop_action = cop.showOptionPane();
                if(cop_action==cop.Yes_value){
                    System.out.println(cop.getMessage());
                }else if(cop_action==cop.No_value){
                    //System.out.println("No");
                }else if(cop_action==cop.Close_value){
                    //System.out.println("Close");
                }
            }



ソースコード
SimpleOptionPaneクラス

package program;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;

public class SimpleOptionPane extends JDialog{

    private JButton yes = new JButton("Yes"),
    no = new JButton("No");
    private JPanel componentPane = new JPanel(),
    buttonPane = new JPanel();
    private int buttonvalue;
    static final int Yes_value = 1,
    No_value = 0,Close_value = -1;
    SimpleOptionPane(Frame owner, String title, boolean modal){
        super(owner,title,modal);
        this.getContentPane().setLayout(new BorderLayout());
        this.getContentPane().add(componentPane, BorderLayout.CENTER);
        this.getContentPane().add(buttonPane, BorderLayout.SOUTH);
        buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
        buttonPane.add(yes);
        buttonPane.add(no);
        yes.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                buttonvalue=Yes_value;
                dispose();
            }
        });
        no.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                buttonvalue=No_value;
                dispose();
            }
        });
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                buttonvalue=Close_value;
                dispose();
            }
        });
        this.pack();
    }
   
    public int showOptionPane(){
        setVisible(true);
        return(buttonvalue);
    }
   
    public JPanel getComponentPane(){
        return(componentPane);
    }
}


CustomOptionPaneクラス

package program;

import java.awt.Frame;

import javax.swing.JLabel;
import javax.swing.JTextField;

public class CustomOptionPane extends SimpleOptionPane{

    private JLabel jl = new JLabel("出力文字列");
    private JTextField jtf = new JTextField("");
    CustomOptionPane(Frame owner, String title, boolean modal){
        super(owner,title,modal);
        jtf.setColumns(20);
        GBLayout.addGB(jl, getComponentPane(), 0, 0, 1, 1);
        GBLayout.addGB(jtf, getComponentPane(), 1, 0, 1, 1);
        this.pack();
    }
   
    public String getMessage(){
        return(jtf.getText());
    }
}

スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://kagenyan.blog69.fc2.com/tb.php/30-469c50aa
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。