下面給一個絕對能跑的範例 .java 檔 有問題可以提出來 並且關鍵點會用紅色標示
IDE: Eclispse
使用方法: 開啟你的IDE(這邊使用Eclipse) , 新增一個project> 在src 新增一個class > 把文章底下
////代碼開始//// 到 ////代碼結束//// 中間的code 全部 "複製貼上"! 就可以執行了 然後再慢慢trace 各代碼的意義 寫得滿簡陋的了 有問題可以留言唷
簡介: 代碼分為三個部分 主要的Main 框架 還有自訂義的Dialog 最後是 自訂義Class
情境:
這邊演示一個 程式碼 一開始先創造一個Frame Frame上面有一個Button1, Button1 按下去之後會彈出一個子視窗,此子視窗是"自訂義的"可以有一個按鈕 兩個按鈕 好幾個給使用者輸入的區塊都沒有關係 剩下的直接看code 先來看一下執行圖片
1.程式執行 的Frame 正中間有一個Button
2:按下圖片之後 跳出一個長條狀的Dialog 有一個Button(ok), 還有一個TextField
3:輸入3 按下OK
4: 注意圖片紅框 系統print 就是輸入的
////////////////////////////////////////////////////////////////代碼開始////////////////////////////////////////////////////
import java.awt.BorderLayout;
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.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class frame extends JFrame{
public static void main(String[] args)
{
frame frame=new frame();
frame.setVisible(true);
}
private JPanel contentPane;
private JButton BT;
public frame()
{ //init frame
setTitle("Test");
setBounds(100,100,400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
BT=new JButton("call dialog"); //set a button
contentPane.add(BT);
//button listener
BT.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Mydialog ID = new Mydialog(); //創建自己定義的Dialog
ID.setModal(true); //這個無敵重要 一定要有 意義為 彈出Dialog程序會 暫停在此 各位可以試試有此行與無此行所取得的 值有何變化
ID.setBounds(100,100,200,400);
testclass tc = ID.getValue(); //呼叫自己創建的Dialog中的一個自訂義function
System.out.println(tc.getS());
}
});
}
}
class Mydialog extends JDialog{ //自訂義的Dialog中我只放入兩個東西 按鈕跟TextField想要放入更多東西可以自己設定
private JButton ok=new JButton("OK");
private JTextField TF = new JTextField(" ");
testclass tc;
public Mydialog()
{
JPanel JP=new JPanel();
add(JP);
JP.add(ok);
JP.add(TF);
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false); //點了這個按鈕之後就讓Dialog隱藏
tc=new testclass(TF.getText());
dispose(); //讓Dialog 關閉
}
});
}
public testclass getValue()
{
setVisible(true); //呼叫此Function之後 讓Dialog顯示
return tc;
}
}
class testclass //一個隨便定義的Class 表示 Dialog也可以回傳給Frame 自訂義Class
{
String s;
public testclass(String ins)
{
s=ins;
}
public String getS()
{
return s;
}
}
/////////////////////////////////////////////代碼結束/////////////////////////////////////////
沒有留言:
張貼留言