对话框的四种类型:
消息, 输入,确认, 颜色
背景:建一个名为“ActionEventDemo”的窗口,在其中放置了一个按钮,一个面板,一个标签。
1)消息对话框
(1)点击按钮弹出名为"消息提示对话框"的消息对话框,对话框里的内容为:“是否要输入内容”。选择“是”即输入 代码中 已经给出的内容。
代码如下:
1 package HandEvent;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5
6 import javax.swing.*;
7
8 public class ActionEventDemo extends JFrame implements ActionListener {
9 JButton click;
10 JPanel panel;
11 JLabel message;
12
13 public ActionEventDemo() {
14 super("ActionEventDemo");//只能放在第一行,在子类的构造方法中,用super调用且放在第一行
15 click =new JButton ("Click");
16 panel =new JPanel();
17 message=new JLabel();
18
19 add(panel);
20 panel.add(click);
21 panel.add(message);
22
23 click.addActionListener(this);//this指代"obj"(public static void 中new 的对象)
24 setSize(300,300);
25 setVisible(true);
26
27 }
28
29 public static void main(String args[]) {
30 ActionEventDemo obj=new ActionEventDemo();
31 }
32 public void actionPerformed(ActionEvent arg0) {
33 //消息对话框
34 JOptionPane.showMessageDialog(this,"是否要输入内容","消息提示对话框",JOptionPane.INFORMATION_MESSAGE);//this交代了在this的前方显示对话框
35 //this 至位置,第二个 为内容,第三个为对话框标题,第四个为对话框类型
36
37 message.setText("Welcome to java");//需要传参
38
39 }
40 }
View Code
(2)点击按钮弹出名为“消息警告对话框”,对话框里的内容为“该内容有风险,是否要继续输入”。选择“是”即输入 代码中 已经给出的内容。
代码如下:
1 package HandEvent;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5
6 import javax.swing.*;
7
8 public class ActionEventDemo extends JFrame implements ActionListener {
9 JButton click;
10 JPanel panel;
11 JLabel message;
12
13 public ActionEventDemo() {
14 super("ActionEventDemo");//只能放在第一行,在子类的构造方法中,用super调用且放在第一行
15 click =new JButton ("Click");
16 panel =new JPanel();
17 message=new JLabel();
18
19 add(panel);
20 panel.add(click);
21 panel.add(message);
22
23 click.addActionListener(this);//this指代"obj"(public static void 中new 的对象)
24 setSize(300,300);
25 setVisible(true);
26
27 }
28
29 public static void main(String args[]) {
30 ActionEventDemo obj=new ActionEventDemo();
31 }
32 public void actionPerformed(ActionEvent arg0) {
33 //消息对话框
34 JOptionPane.showMessageDialog(this,"该内容有风险,是否要继续输入","消息警告对话框",JOptionPane.WARNING_MESSAGE);//this交代了在this的前方显示对话框
35 //this 至位置,第二个 为内容,第三个为对话框标题,第四个为对话框类型
36
37 message.setText("Welcome to java");//需要传参
38
39 }
40 }
View Code
两段代码的分析:这两段代码都是属于消息对话框(当然还有其他的消息对话框)。两段代码的变动只有一句:
将:
JOptionPane.showMessageDialog(this,"是否要输入内容","消息提示对话框",JOptionPane.INFORMATION_MESSAGE);//this交代了在this的前方显示对话框
改为:
JOptionPane.showMessageDialog(this,"该内容有风险,是否要继续输入","消息警告对话框",JOptionPane.WARNING_MESSAGE);//this交代了在this的前方显示对话框
在JOptionPane.showMessageDialog后面的括号中(,,,)有三个都号,分割成了4个位置。
第一个位置“this”表示,在该位置之前弹出窗口;第二个位置 输入对话框的内容;第三个位置 设定对话框的标题;第四个位置 设定对话框的属性(提示.警告等等,注:不同属性的标志不一样)。
其中 “this”——new 出的“obj”对象的设定:
public static void main(String args[]) {
ActionEventDemo obj=new ActionEventDemo();
}
2)输入对话框
(1)点击按钮弹出名为"输入对话框"的输入对话框,对话框里的内容为:“给标签赋值的内容是:”,在下面的文本框中输入 要给标题赋值的内容 点击确定后,则在按钮后面显示。如果点击“取消”,则无内容显示。
代码如下:
1 package HandEvent;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5
6 import javax.swing.*;
7
8 public class ActionEventDemo extends JFrame implements ActionListener {
9 JButton click;
10 JPanel panel;
11 JLabel message;
12
13 public ActionEventDemo() {
14 super("ActionEventDemo");//只能放在第一行,在子类的构造方法中,用super调用且放在第一行
15 click =new JButton ("Click");
16 panel =new JPanel();
17 message=new JLabel();
18
19 add(panel);
20 panel.add(click);
21 panel.add(message);
22
23 click.addActionListener(this);
24 setSize(300,300);
25 setVisible(true);
26 }
27
28 public static void main(String args[]) {
29 ActionEventDemo obj=new ActionEventDemo();
30 }
31
32 public void actionPerformed(ActionEvent arg0) {
33 //输入对话框
34 String str=JOptionPane.showInputDialog(this, "给标签赋值的内容是:","输入对话框",JOptionPane.INFORMATION_MESSAGE);
35 if(str!=null)
36 message.setText(str);
37 //this 至位置,第二个 为内容,第三个为对话框标题,第四个为对话框类型
38 //message.setText("Welcome to java");//需要传参
39 }
40 }
View Code
分析:
在之前的内容上
将:
JOptionPane.showMessageDialog(this,"该内容有风险,是否要继续输入","消息警告对话框",JOptionPane.WARNING_MESSAGE);//this交代了在this的前方显示对话框
改为:
String str=JOptionPane.showInputDialog(this, "给标签复制的内容是:","输入对话框",JOptionPane.INFORMATION_MESSAGE);
if(str!=null)
message.setText(str);
注:
<1>和消息提示框不同的是,输入对话框必须要定义一个String str 变量 ,并将JOptionPane.showInputDialog()的值赋值给该变量
<2>考虑到代码的完整性,用if语句判断,如果在输入框中输入不为空(即不为 null)则用message。setText导出输入框中输入的字符串。
<3>JOptionPane.showInputDialog()和JOptionPone.showMessageDialog()一样,在他们后面的括号中的四个位置上:分别是:this(在该位置之前插入),对话框中的内容,对话框的名称以及对话框的属性。
3)确认对话框
(1)点击按钮弹出名为"确认对话框"的确认对话框,对话框里的内容为:“是否确认给标题赋值:”,点击“是”,则在按钮后面显示预先先好的message.setText()复制代码。如果点击“否”或者“取消”,则无内容显示。
代码如下:
1 package HandEvent;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5
6 import javax.swing.*;
7
8 public class ActionEventDemo extends JFrame implements ActionListener {
9 JButton click;
10 JPanel panel;
11 JLabel message;
12
13 public ActionEventDemo() {
14 super("ActionEventDemo");//只能放在第一行,在子类的构造方法中,用super调用且放在第一行
15 click =new JButton ("Click");
16 panel =new JPanel();
17 message=new JLabel();
18
19 add(panel);
20 panel.add(click);
21 panel.add(message);
22
23 click.addActionListener(this);
24
25 setSize(300,300);
26 setVisible(true);
27 }
28
29 public static void main(String args[]) {
30 ActionEventDemo obj=new ActionEventDemo();
31 }
32
33 public void actionPerformed(ActionEvent arg0) {
34 //确认对话框
35 int n=JOptionPane.showConfirmDialog(this, "确认是否给标签赋值","确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
36 if(n==JOptionPane.YES_OPTION) {
37 message.setText("welcome");
38 }
39 else if (n==JOptionPane.NO_OPTION){
40 message.setText(null);
41 }
42 else {
43 message.setText(null);
44 }
45
46 }
47 }
View Code
分析:
在2)的基础上:
将:
String str=JOptionPane.showInputDialog(this, "给标签复制的内容是:","输入对话框",JOptionPane.INFORMATION_MESSAGE);
if(str!=null)
message.setText(str);
改为:
int n=JOptionPane.showConfirmDialog(this, "确认是否给标签赋值","确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION) {
message.setText("welcome");
}
else if (n==JOptionPane.NO_OPTION){
message.setText(null);
}
else {
message.setText(null);
}
注 :
<1>和输入对话框一样,也要定义int n 的整型变量,并将JOptionPane.showConfirmDialog()赋值变量
<2>JOptionPane.showConfirmDialog()和JOptionPane.showInputDialog(),JOptionPone.showMessageDialog()一样,在他们后面的括号中的四个位置上:分别是:this(在该位置之前插入),对话框中的内容,对话框的名称以及对话框的属性。
<3>在<2>中的第四个位置上JOptionPane在加“ . ”之后有很三个可选项(包括1yes,no,cancle 2yes 3no)
<4>若选择了yes,no ,cancle的话,if语句对三个按钮反别判断。“no”或者“cancle”则在massage。setText()中写入“null”
4)颜色对话框
(1)点击按钮弹出名为"调色板"的颜色对话框,选择颜色,即为窗口的背景色。
代码如下:
1 package HandEvent;
2
3 import java.awt.Color;
4 import java.awt.Container;
5 import java.awt.event.ActionEvent;
6 import java.awt.event.ActionListener;
7
8 import javax.swing.*;
9
10 public class ActionEventDemo extends JFrame implements ActionListener {
11 JButton click;
12 JPanel panel;
13 JLabel message;
14
15 public ActionEventDemo() {
16 super("ActionEvenDemo");//只能放在第一行,在子类的构造方法中,用super调用且放在第一行
17 click =new JButton ("Click");
18 panel =new JPanel();
19 message=new JLabel();
20
21 add(panel);
22 panel.add(click);
23 panel.add(message);
24
25 click.addActionListener(this);
26
27 setSize(300,300);
28 setVisible(true);
29
30 }
31
32 public static void main(String args[]) {
33 ActionEventDemo obj=new ActionEventDemo();
34 }
35
36 public void actionPerformed(ActionEvent arg0) {
37 //颜色对话框
38 Color clor=JColorChooser.showDialog(this,"调色板" ,getContentPane().getBackground());
39 panel.setBackground(clor);
40
41 }
42 }
View Code
分析:
将:
int n=JOptionPane.showConfirmDialog(this, "确认是否给标签赋值","确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION) {
message.setText("welcome");
}
else if (n==JOptionPane.NO_OPTION){
message.setText(null);
}
else {
message.setText(null);
}
改为:
Color clor=JColorChooser.showDialog(this,"调色板" ,getContentPane().getBackground());
panel.setBackground(clor);
注:
<1>和输入,确认对话框一样,定义一个Color clor的变量,并将JColorChooser.showDialog()赋值变量。
<2>直接用JPanel 定义的变量panel调用color,否则无法显示背景颜色。