JDialog窗體是Swing組件中的對話框
JDialog窗體的功能是從一個窗體中彈出另一個窗體,就像是在使用IE瀏覽器時彈出的確定對話框一樣。
在應用程序中創建JDialog窗體需要實例化JDialog類,通常使用以下幾個JDialog類的構造方法
public JDialog(): 創建一個沒有標題和父窗體的對話框。
public JDialog(Frame f): 創建一個指定父窗體的對話框,但該窗體沒有標題。
public JDialog(Frame f, boolean model): 創建一個指定模式的父窗體對話框,但該窗體沒有指定標題。
public JDialog(Frame f, String title): 創建一個指定父窗體和標題的對話框。
public JDialog(Frame f, String title, boolean model): 創建一個指定窗體、標題和模式的對話框。
import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.WindowConstants; class MyJDialog extends JDialog {//創建新類繼承JDialog類
public MyJDialog(MyFrame frame){ //實例化一個JDialog類對象,指定對話框的父窗體、窗體標題和類型
super(frame,"第一個JDialog窗體",true); Container container=getContentPane(); //創建一個容器
container.add(new JLabel("這是一個對話框"));//在容器中添加標簽
setBounds(120,120,100,100);//設置對話框窗體大小
} } public class MyFrame extends JFrame{ public static void main(String args[]){ new MyFrame(); } public MyFrame(){ Container container=getContentPane(); container.setLayout(null);
//父窗體 JLabel jl=new JLabel("這是一個JFrame窗體"); jl.setHorizontalAlignment(SwingConstants.CENTER); //將標簽的文字至於標簽中間位置 container.add(jl); JButton bl=new JButton("彈出對話框"); bl.setBounds(10, 10, 100, 21); bl.addActionListener(new ActionListener(){ //為按鈕添加鼠標單擊事件 public void actionPerformed(ActionEvent e){ new MyJDialog(MyFrame.this).setVisible(true); //使MyDialog窗體可見 } }); container.add(bl); container.setBackground(Color.white); setSize(200, 200); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setVisible(true); } }
運行結果如圖:
分析:在本實例中,為了使對話框在父窗體彈出,定義了一個JFrame窗體,首先在該窗體中定義一個按鈕,然后為此按鈕添加一個鼠標單擊監聽事件(在這里使用了匿名內部類的形式)。這里使用new MyJDialog().setVisible(true)語句使對話框窗體課件,這樣就實現了用戶單擊該按鈕后彈出對話框功能。