//************************************************************* //Java application // 「DialogTest2」 // //          作 成 者:ルート高菜    //          作成開始月:2006/6 //          最終更新月:2006/6 [TN087/J77] //************************************************************* import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DialogTest2 extends JFrame implements ActionListener { //Eclipseの場合、シリアライズ可能クラスでこれがないと警告が出る private static final long serialVersionUID=0; // public static void main(String[] args) { DialogTest2 frame=new DialogTest2(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //右上×印で終了 frame.setVisible(true); } // JPanel panel; JLabel label; //モーダルと非モーダルの2種類用意する JButton buttonModal=new JButton("Modal Dialog"); JButton buttonNoModal=new JButton("not Modal Dialog"); //コンストラクタ public DialogTest2(){ // setTitle("DialogTest2"); setSize(500,100); // label=new JLabel("ダイアログから背景色を変更"); panel=new JPanel(); panel.setBackground(Color.WHITE); panel.add(label); panel.add(buttonModal); panel.add(buttonNoModal); //コンテナ枠 Container cp=getContentPane(); cp.add(panel); // buttonModal.addActionListener(this); buttonNoModal.addActionListener(this); } //背景色の受け渡しメソッド public Color getBackColor(){ return panel.getBackground(); } public void setBackColor(Color c){ panel.setBackground(c); } //ボタンイベント(現在の背景色をセットした後、ダイアログを表示) public void actionPerformed(ActionEvent e) { if(e.getSource()==buttonModal){ SelectDialog dialog=new SelectDialog(this,"背景色選択(モーダル)",true); dialog.setColor(panel.getBackground()); dialog.setVisible(true); }else if(e.getSource()==buttonNoModal){ SelectDialog dialog=new SelectDialog(this,"背景色選択(非モーダル)",false); dialog.setColor(panel.getBackground()); dialog.setVisible(true); } } //背景色選択ダイアログ(内部クラス) class SelectDialog extends JDialog implements ActionListener { //Eclipseの場合、シリアライズ可能クラスでこれがないと警告が出る private static final long serialVersionUID=0; // DialogTest2 parent; // ButtonGroup color=new ButtonGroup(); JRadioButton white=new JRadioButton("white"); JRadioButton cyan=new JRadioButton("cyan"); JRadioButton yellow=new JRadioButton("yellow"); JRadioButton magenta=new JRadioButton("magenta"); // JButton ok=new JButton("OK"); JButton cancel=new JButton("CANCEL"); //コンストラクタ public SelectDialog(Frame owner,String title,boolean modal){ super(owner,title,modal); // parent=(DialogTest2)owner; // color.add(white); color.add(cyan); color.add(yellow); color.add(magenta); // JPanel panel=new JPanel(); panel.add(white); panel.add(cyan); panel.add(yellow); panel.add(magenta); panel.add(ok); panel.add(cancel); //コンテナ枠 Container cp=getContentPane(); cp.add(panel); //サイズ調整 pack(); // ok.addActionListener(this); cancel.addActionListener(this); } //現在の背景色データをセット public void setColor(Color c){ if(c==Color.WHITE){ white.setSelected(true); }else if(c==Color.CYAN){ cyan.setSelected(true); }else if(c==Color.YELLOW){ yellow.setSelected(true); }else if(c==Color.MAGENTA){ magenta.setSelected(true); }else{ white.setSelected(true); } } //ボタンイベント public void actionPerformed(ActionEvent e) { if(e.getSource()==ok){ if(white.isSelected()){ parent.setBackColor(Color.WHITE); }else if(cyan.isSelected()){ parent.setBackColor(Color.CYAN); }else if(yellow.isSelected()){ parent.setBackColor(Color.YELLOW); }else if(magenta.isSelected()){ parent.setBackColor(Color.MAGENTA); } } //いずれのボタンでも、隠す setVisible(false); } } }