JAVA自學筆記25
1、GUI
1)圖形用戶接口,以圖形的方式,來顯示計算機操作的界面,更方便更直觀
2)CLI
命令行用戶接口,就是常見的Dos,操作不直觀
3)
類Dimension
類內封裝單個對象組件中組件的寬度和高度(精確到整數)
Dimension(int width,int height);
類Point
//窗體案例
Frame f=new Frame();//也可通過帶參構造設置標題String title,//設置窗體標題
f.setTitle("dd");
//設置窗體大小
//f.setSize(100,200);
Dimension d=new Dimension(100,200);
//設置窗體位置//f.setLocation(400,200);
Point p=new Point(400,200);
f.location(p);//f.setBounds(int x.int y,int width,int height);//同時設置坐標及長寬Thread.sleep(3000);//休眠3秒再彈出
f.setVisible(true);
2、事件監聽器
1)把事件源和事件關聯起來
2)
//窗體關閉案例
Frame f=new Frame();
f.setTitle("dd");
f.setBounds(100,200,300,400);/
Thread.sleep(3000);
//事件監聽
f.addWindowListener(new WindowListener()
{
public void WindowClosing(WindowEvent e){
System.exit(0);
}
});
f.setVisible(true);
3)適配器設計模式
接口須重寫方法較多且不需都實現時,可提供一個適配器類(僅僅空實現即可),在實現類重寫即可
接口–適配器–實現類
WindowAdapter
適配器類
//窗體關閉案例
Frame f=new Frame();
f.setTitle("dd");
f.setBounds(100,200,300,400);
Thread.sleep(3000);f.addWindowListener(new WindowAdapte(){
public void windowClosing(WindowEvent e);{
System.exit(0);
}
});
f.setVisible(true);
4)布局
//窗體添加按鈕并對按鈕添加事件
//使用流式布局
Frame f=new Frame();
f.setTitle("dd");
f.setBounds(100,200,300,400);
Thread.sleep(3000);
//設置布局為流式布局
f.setLayout(new FlowLayout());//創建按鈕對象
Button bu=new Button("按鈕");
bu.setSize(10,20);//把按鈕添加到窗體//設置窗體可以關閉
f.addWindowListener(new WindowAdapte(){
public void windowClosing(WindowEvent e);{
System.exit(0);
}
});//設置點擊事件
bu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("success");
}
});
f.setVisible(true);
//把文本框的值轉移到文本域
//創建窗體對象
Frame f=new Frame("數據轉移");
//設置窗體屬性和布局
f.setBounds(100,500,633,100);
f.setLayout(new FlowLayout());//創建文本框
final TextField tf=new TextField(20);//文本框內可放20個字符
//創建按鈕
Button bu=new Button("數據轉移");
//創建文本域
final TextAreas ta=new TextArea(10,40);
//
//對按鈕添加事件
bu.addActionListener(new ActionListener)(){
ppublic void actionPerformed(ActionEvent e){
//獲取文本框的值
String tf_str=tf.getText().trim();//設置給文本域并換行
ta.append(tf_stf+"\r\n");
}
//獲取光標
tf.requestFocus();//清空文本框數據
tf.setText("");
});
//把組件添加到窗體
f.add(tf);
f.add(bu);
f.add(ta);//設置窗體關閉
f.addWindowListener(new WindowAdapte(){
public void windowClosing(WindowEvent e);{
System.exit(0);
}
});
//設置窗體顯示
f.setVisible(true);
//更改背景色
//創建窗體對象
final Frame f=new Frame("更改背景色");
//設置窗體屬性和布局
f.setBounds(100,500,633,100);
f.setLayout(new FlowLayout());//創建四個按鈕
Button redButton=new Button("red");f.add(redButton);//設置窗體關閉
f.addWindowListener(new WindowAdapte(){
public void windowClosing(WindowEvent e);{
System.exit(0);
}
});
//對按鈕添加動作事件
/*redButton.addActionLostener(new ActionLister(){
public void actionPerformed(ActionEvent e){
f.setBackground(Color.RED);
}
});*///對按鈕添加鼠標點擊事件
/*redButton.addMouseListener(new MouseAdapter(){
public mouseClicked(MouseEvent e){
f.setBackground(color.RED);
}
});*///對按鈕添加鼠標的進入事件
redButton.addMouseListener(new MouseAdapter)(){
public void mouseEntered(MouseEvent e){
f.setBackground(color.RED);
}
});//對按鈕添加鼠標的離開事件
redButton.addMouseListener(new MouseAdapter)(){
public void mouseExited(MouseEvent e){
f.setBackground(color.WHITE);
}
});//設置窗體顯示
f.setVisible(true);
//控制文本框只能輸入數字字符
//創建窗體對象
final Frame f=new Frame("只能輸入數字字符");
//設置窗體屬性和布局
f.setBounds(100,500,633,100);
f.setLayout(new FlowLayout());//創建Label標簽對象
Label label=new Label("請輸入QQ號碼僅為數字");
TextFiled tf=new TextField(40);//為文本框添加事件
tf.addKeyListener((new) KeyAdapter({
public void KeyPressed(KeyEvent e){
char ch=e.getKeyChar();
if(!(ch>='0'&&ch<='9')){}
e.consume();//使用此事件,以便不會按照默認的方式由產生的源代碼來處理此事件
}
});//添加到窗體上
f.add(label);
f.add(tf);//設置窗體顯示
f.setVisible(true);
//設置窗體關閉
f.addWindowListener(new WindowAdapte(){
public void windowClosing(WindowEvent e);{
System.exit(0);
}
});
菜單組件:
//一級菜單案例
//創建窗體對象
final Frame f=new Frame("只能輸入數字字符");
//設置窗體屬性和布局
f.setBounds(100,500,633,100);
f.setLayout(new FlowLayout());//創建菜單欄
MenuBar mb=new MenuBar();//創建菜單
Menu m=new Menu("文件");
//創建菜單項
MenuItem mi=new MenuItem("退出系統");
//
m.add(mi);
mb.add(m);//設置菜單欄
f.setMenuBar(mb);mi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});//設置窗體顯示
f.setVisible(true);
//設置窗體關閉
f.addWindowListener(new WindowAdapte(){
public void windowClosing(WindowEvent e);{
System.exit(0);
}
});
//設置多級別菜單
final Frame f=new Frame("設置多級菜單");
//設置窗體屬性和布局
f.setBounds(100,500,633,100);
f.setLayout(new FlowLayout());//創建菜單欄
MenuBar mb=new MenuBar();//創建菜單
Menu m1=new Menu("文件");
Menu m2=new Menu("更改名稱");
//創建菜單項
MenuItem mi1=new MenuItem("退好好學習");
MenuItem mi2=new MenuItem("天天向上");
MenuItem mi3=new MenuItem("恢復標題");
MenuItem mi4=new MenuItem("退打開記事本");
MenuItem mi5=new MenuItem("退出系統");
//
m2.add(mi1);
m2.add(mi2);
m2.add(mi3);m1.add(m2);
m1.add(mi4);
m1.add(mi5);//設置菜單欄
f.setMenuBar(mb);//設置事件
mi5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});//設置事件
mi4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Runtime r=Runtime.getRuntime();
r.exec("notepad");
}
});//設置事件
mi1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle(mi1.getLabel());
}
});//設置事件
mi2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle("多級菜單");
}
});//設置事件
mi3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle(mi1.getLabel());
}
});//設置窗體關閉
f.addWindowListener(new WindowAdapte(){
public void windowClosing(WindowEvent e);{
System.exit(0);
}
});//設置窗體顯示
f.setVisible(true);
4、Netbeans
1)界面開發常用
//修改窗體圖標
public class UiUtill{
private Uiutil(){}
public static void setFrameImage(JFrame jf){
//獲取工具類對象
Toolkit tk=ToolKit.getDefaultToolKit();
//根據路徑獲取圖片
Image i=tk.getImage("src\\cn\\itcast\\resource\\a.jpg");
//給窗體設置圖片
jf.setIconImage(i);}
}
//設置窗體居中
//獲取工具對象
Toolkit tk=Toolkit.getDefaultTookit();//獲取屏幕寬高
Dimension d=tk.getScreenSize();
double screenWidth=d.getWidth();
double screenHeight=d.getHeight();
//獲取窗體寬高
int frameWidth=jf.getWidth();
int frameHeight=jf.getHeight();//獲取新的寬高
int width=(int)(screenWidth-frameWidth)/2;
int height=(int)(screenHeight-frameHeight)/2;