欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java窗口精細(xì)全方位講解

 更新時間:2021年08月20日 09:55:02   作者:java縫合怪  
這篇文章呢,將會系統(tǒng)的精細(xì)的教會鐵鐵們?nèi)绾巫约簩懸粋€完整的窗口;看完之后窗口穩(wěn)拿下!!!所以呢由于詳細(xì),知識點多,可能有點長,鐵鐵們慢慢仔細(xì)閱讀吧;文章寫的還是一如既往快樂的,哈哈哈

在這里插入圖片描述

好了,stop!
我們呢
咳咳咳
下面呢

也就直接進(jìn)入正題?。?!

一、新建簡單窗口

在java中新建窗口將會用到"java.awt",大家可以參見API文檔

import java.awt.*; //包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有類。 

這是API文檔的下載鏈接;
API下載地址
我呢用的是Notpad++進(jìn)行編寫的,所以就用這個直接給鐵鐵們演示了;
首先我們先寫一個個簡單的窗口代碼:

import java.awt.*;
public class chuangko{
public static void main(String args[]){
Frame p=new Frame("Hello");//定義窗口名稱
p.setSize(500,500);//設(shè)置窗口大?。ㄩL,寬)
p.setLocation(300,200);//設(shè)置窗口左上角點界面位置(長,寬)
p.setBackground(Color.BLUE);//設(shè)置窗口內(nèi)部顏色
p.setVisible(true);//顯示窗口
}
}

運(yùn)行效果如下:

在這里插入圖片描述

現(xiàn)在呢我們已經(jīng)掌握了最基礎(chǔ)的窗口代碼編寫;
ps:是不是感覺也不難哎

在這里插入圖片描述

二、編寫窗口中的按鍵

在一個窗口代碼中我們不僅僅要將窗口顯示出來,更重要的是將這個窗口代碼實現(xiàn)其價值,所以添加窗口按鍵是必不可少的方法!
我們呢還在上面那段代碼中繼續(xù)修改;
首先我們在API文檔中找到button這個類;

public class Button
extends Component
implements Accessible
//此類創(chuàng)建一個標(biāo)簽按鈕。當(dāng)按下該按鈕時,

這是button類常用的方法;
在原來代碼中填寫:

import java.awt.*;
public class chuangko{
public static void main(String args[]){
Frame p=new Frame("Hello");
p.setSize(1000,500);
p.setLocation(300,200);
p.setBackground(Color.BLUE);
p.add(new Button("!"));//顯示,新建按鍵,定義按鍵名稱
/*或者:
Button b=new Button("!");
p.add(b);
*/
p.setVisible(true);
}
}

這樣能我們就簡單的寫出來個按鍵,但是遠(yuǎn)遠(yuǎn)不夠!
我們將按鍵布局:

import java.awt.*;
public class chuangko{
public static void main(String[] args){
Frame f=new Frame("Hello");
f.setLayout(new GridLayout(2,1));//初始化按鍵布局樣式,兩行一列
f.setSize(300,200);
f.setBackground(new Color(200,50,104));//定義窗口背景顏色,括號內(nèi)代表顏色取值
f.setLocation(500,400);
Panel a=new Panel(new BorderLayout());//定義上半部分
Panel b=new Panel(new BorderLayout());//定義下半部分
Panel a1=new Panel(new GridLayout(2,1));//定義一個值a1,是兩行一列
Panel b1=new Panel(new GridLayout(2,2));//定義一個值b1,是兩行2列
a.add(new Button("0"),BorderLayout.WEST);//放在a部分西邊
a.add(new Button("0"),BorderLayout.EAST);//放在a部分東邊
a1.add(new Button("0"));//中間第一行
a1.add(new Button("0"));//中間第二行
a.add(a1,BorderLayout.CENTER);//將a1放到a部分中間里面
b.add(new Button("0"),BorderLayout.WEST);//放在b部分西邊
b.add(new Button("0"),BorderLayout.EAST);//放在b部分東邊
for(int i=0;i<4;i++)
{
b1.add(new Button("0"));//將中間4個位置平均分布
}
b.add(b1,BorderLayout.CENTER);//將b1放到b部分中間里面

f.add(a);//定義上半部分
f.add(b);//定義下半部分
f.setVisible(true);//顯示
}
}

鐵鐵們看到這么長的代碼先別慌,其實仔細(xì)理解很簡單的

在這里插入圖片描述

代碼運(yùn)行效果如下:

在這里插入圖片描述

這樣子呢我們就了解了按鍵布局,但是我們發(fā)現(xiàn)按動按鍵并未有反應(yīng)所以我們需要寫一個監(jiān)聽方法來進(jìn)行對按鍵的操作;
我們呢就先了解一下什么是監(jiān)聽;
首先我們在API文檔中找到:Monitor

public abstract class Monitor
extends Notification Broadcaster Support
implements MonitorMBean, MBeanRegistration
//定義所有監(jiān)視器 MBean 的公共部分。

我們用接口“ActionListener”進(jìn)行調(diào)用;
了解完監(jiān)聽方法那么我們試這來寫一個簡單的程序;
代碼如下:

import java.awt.*;
import java.awt.event.*;
public class jt{
public static void main(String[] args){
Frame f=new  Frame("監(jiān)聽");
Button b=new Button("!!!!!");
Monitor bh=new Monitor();//監(jiān)聽,new誰調(diào)用誰
b.addActionListener(bh);//被動監(jiān)聽,鉤子函數(shù)
f.add(b,BorderLayout.CENTER);//按鍵局中
f.pack();//根據(jù)按鍵設(shè)置頁面合理大小
f.setVisible(true);
}
}
class Monitor implements ActionListener //接口
{
public void actionPerformed(ActionEvent e)//封裝
{
System.out.println("ok");//監(jiān)聽表述
}
}

代碼運(yùn)行效果:
當(dāng)我們點擊按鍵時,在命令提示符中會有“ok”顯示出來;
由此我們掌握了一定的按鍵編寫的方法?。?!

三、簡單的按鍵運(yùn)行

在了解以上知識之后我們試的來編寫一個加法程序,用窗口進(jìn)行展示出來;
在編寫之前我們要掌握以下幾個知識點:

1.流布局管理器:

類:FlowLayout
這個我們在API文檔中可進(jìn)行查詢

在這里插入圖片描述

2.靜態(tài)文本框:

在API文檔中找到:Label
格式如下:

Label a=new Label(" ");

在了解完以上知識后我們可以著手編寫加法程序了
代碼,解析如下:

import java.awt.*;
import java.awt.event.*;
public class jiafa{
public static void main(String[] args){
new TFFrame().launchFrame();
}
}
class TFFrame extends Frame{
TextField tf,tf1,tf2;//在外部定義,否則調(diào)用不上!
public void launchFrame()//運(yùn)行
{
 tf=new TextField(10);//允許編輯單行文本的文本組件,設(shè)置寬度
tf1=new TextField(10);
 tf2=new TextField(20);
Label lblPlus=new Label("+");
//輸入靜態(tài)文本,是一個可在容器中放置文本的組件。一個標(biāo)簽只顯示一行只讀文本。文本可由應(yīng)用程序更改,但是用戶不能直接對其進(jìn)行編輯。
Button b=new Button("=");//設(shè)置按鍵
b.addActionListener(new MyMonitor());
setLayout(new FlowLayout());//使用流布局管理器
add(tf);//按想輸出樣式順序?qū)慳dd
add(lblPlus);
add(tf1);
add(b);
add(tf2);
tf.addActionListener(new TFActionListener());//新建接口
tf1.addActionListener(new TFActionListener());//新建接口
pack();
setVisible(true);//顯示輸入框
}
//聲明在class里面,方法外面?。?!
private /* 只可以自己訪問*/ class MyMonitor implements ActionListener//直接定義內(nèi)部類,可以直接訪問?。。?!
{
public void actionPerformed (ActionEvent e)//封裝
{
int n1=Integer.parseInt(tf.getText());//將文本框輸入值調(diào)用Integer
int n2=Integer.parseInt(tf1.getText());
tf2.setText(""+(n1+n2));//定義值的運(yùn)算
}
}
}

這樣我們就寫好了基礎(chǔ)的加法代碼了;
運(yùn)行一下試試:

在這里插入圖片描述

————————————————————手動分割—————————————————————
在學(xué)習(xí)了以上知識后我們可以試試自己編寫一個計算平方的一個窗口程序;

在這里插入圖片描述

答案放在文章結(jié)尾處鐵鐵們;
————————————————————手動分割—————————————————————

對了!

細(xì)心的鐵鐵們可能發(fā)現(xiàn)了所有窗口無法關(guān)閉,所以我們呢需要一個窗口關(guān)閉代碼;
這個就不詳細(xì)說了,我往期博客中有專門講解過,直接上代碼吧!

在這里插入圖片描述

this.addWindowListener(
		new WindowAdapter()
		{
		public void windowClosing(WindowEvent e)//封裝窗口關(guān)閉類型
		{
		setVisible(false);
		System.exit(0);//顯示關(guān)閉
		}
		}
);

這串代碼直接放到輸出顯示出口代碼的后面即可!

四、窗口畫圖

這個呢本來是不屬于新建窗口方面的,但是這個太過于簡單我也就直接一起說了吧鐵鐵們;

在這里插入圖片描述

ps:是真的真的很簡單哎
咳咳咳首先呢我們還是老樣子直接打開API文檔。在awt里面找到Color類和Graphics類;

public class Color
extends Object
implements Paint, Serializable
//Color 類用于封裝默認(rèn) sRGB 顏色空間中的顏色,或者用于封裝由 ColorSpace 標(biāo)識的任意顏色空間中的顏色

public abstract class Graphics
extends Object

Color類用于設(shè)定圖像顏色;Graphics類用于設(shè)定圖像類型;
在此之后我們找到專門用于畫圖的接口Paint;

public void paint (Graphics g)
{
}

掌握以上知識點呢我們可以試的來寫一個小的程序;

import java.awt.*;
import java.awt.event.*;
public class ht{
public static void main(String[] args){
new PainFrame().launchFrame();
}
}
class PainFrame extends Frame{
public void launchFrame(){
setBounds(200,0,640,480);//定義界面位置及其大小
setVisible(true);
//拿來吧你
addWindowListener  
(
		new WindowAdapter()
		{
		public void windowClosing(WindowEvent e)
		{
		setVisible(false);
		System.exit(0);
		}
		}
);
}

public void paint(Graphics g)//繪制對象,圖像上進(jìn)行繪制              
//Graphics 類是所有圖形上下文的抽象基類,允許應(yīng)用程序在組件(已經(jīng)在各種設(shè)備上實現(xiàn))以及閉屏圖像上進(jìn)行繪制。 
{
Color c=g.getColor();//定義新建顏色
g.setColor(Color.red);//顏色
g.fillOval(50,60,50,50);//定義圖像樣式、位置及其大小
g.setColor(Color.blue);
g.fillRect(200,360,80,50);
g.setColor(c);//回復(fù)現(xiàn)場(習(xí)慣)
}
}

運(yùn)行效果:


在這里插入圖片描述

雖然看起來比較簡陋但是至少掌握了最基礎(chǔ)的窗口畫圖;

在這里插入圖片描述

五、窗口鼠標(biāo)響應(yīng)

昨天是七夕節(jié),想必鐵鐵們有不少人都孤寡了吧;(/dog我也一樣)

在這里插入圖片描述

但是!
別灰心鐵鐵們,我們可以自己寫一個窗口對自己表白嘛;
吶!這就是我自己寫的;(/dog 心畫的有點丑了,差不多看吧)

在這里插入圖片描述

鐵鐵們看到這個是不是想試一試呢;
這件窗口其實很簡單,也就是用鼠標(biāo)響應(yīng)方法寫出來的窗口!
首先
我們還是還是還是要用API文檔查詢!
找到類 Point;

構(gòu)造方法摘要 
Point() 
          在坐標(biāo)空間的原點 (0,0) 構(gòu)造并初始化一個點。 
Point(int x, int y) 
          在坐標(biāo)空間中指定的 (x,y) 位置構(gòu)造并初始化一個點。 
Point(Point p) 
          構(gòu)造并初始化一個與指定的 Point 對象具有相同位置的點。 

還有接口:MouseListener

方法摘要 
 void mouseClicked(MouseEvent e) 
          鼠標(biāo)按鍵在組件上單擊(按下并釋放)時調(diào)用。 
 void mouseEntered(MouseEvent e) 
          鼠標(biāo)進(jìn)入到組件上時調(diào)用。 
 void mouseExited(MouseEvent e) 
          鼠標(biāo)離開組件時調(diào)用。 
 void mousePressed(MouseEvent e) 
          鼠標(biāo)按鍵在組件上按下時調(diào)用。 
 void mouseReleased(MouseEvent e) 
          鼠標(biāo)按鈕在組件上釋放時調(diào)用。 

找到以上兩個呢,也就完事具備只差拼湊了,哈哈哈
那么我們來寫出這個代碼:

import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class shub{
public static void main(String[] args){
new MyFrame("孤寡");//窗口名稱

}
}
class MyFrame extends Frame{
ArrayList<Point> points=null;//初始化接口,<Point> 指定只能裝入類型
MyFrame(String s){
super(s);
points=new ArrayList<Point> ();//將空間(x,y)放入接口,<Point> 指定只能裝入類型
setLayout(null);
setBounds(600,200,520,520);//文本框大小位置
this.setBackground(new Color(255,100,100));
setVisible(true);
/**/  //關(guān)閉窗口,寫在顯示窗口后面!
this.addWindowListener(
		new WindowAdapter()
		{
		public void windowClosing(WindowEvent e)//封裝窗口關(guān)閉類型
		{
		setVisible(false);
		System.exit(0);//顯示關(guān)閉
		}
		}
);
/**/
this.addMouseListener(new Monitor());//addMouseListener添加指定的鼠標(biāo)偵聽器,以接收發(fā)自此組件的鼠標(biāo)事件。
}
public void paint(Graphics g)//畫圖(鼠標(biāo)點完的樣式)
{
Iterator<Point> a=points.iterator();//指定拿出只能是point
while(a.hasNext())//每點一次出一次圖案,循環(huán)
{
Point p=(Point)a.next();
g.setColor(Color.RED);
g.fillOval(p.x,p.y,10,10);

}

}
public void addPoint(Point p){
points.add(p);//加入新建的鼠標(biāo)點
}

}
class Monitor extends MouseAdapter//接收鼠標(biāo)事件的抽象適配器類。
{
public void mousePressed(MouseEvent e)//接收后封裝,方法類型在里面
{
MyFrame f=(MyFrame)e.getSource();//拿到MyFrame事件源
f.addPoint(new Point(e.getX(),e.getY()));//Point表示 (x,y) 坐標(biāo)空間中的位置的點,以整數(shù)精度指定。鼠標(biāo)每點一下會新建一個點對象出來
f.repaint();//將Frame進(jìn)行重畫,重繪此組件。 
/*repaint-update()-paint(),調(diào)用順序(雙緩沖)*/
} 
}

這樣子呢;
這個看似復(fù)雜的代碼也就迎刃而解了;

在這里插入圖片描述

所以說代碼這個嘛,看似復(fù)雜其實都是紙老虎哎!

六、總結(jié)

鐵鐵們以上呢就是java窗口入門學(xué)習(xí)的基本知識點了;
要是鐵子們有時間可以試試吧這些代碼都拼湊在一起;(/摸魚)
最后呢!
還有一點!
很重要滴!
就是
!
幫我兄弟找個對象,哈哈哈哈

在這里插入圖片描述

吶!表情包附上?。?! (ps:看上的可以私信聯(lián)系我,hxd)

哦對了!正經(jīng)事忘了!

我把上面練習(xí)的平方代碼附上,記得寫完之后在看哈!

在這里插入圖片描述

代碼如下:

import java.awt.*;
import java.awt.event.*;
public class pf{
public static void main(String[] args){
//new MyFrame("平方");
new TFFrame().launchFrame();
}
}
class TFFrame extends Frame{
TextField n1,n2;
public void launchFrame()
{
//Frame f=new Frame("平方");
n1=new TextField(10);
n2=new TextField(15);
Label f=new Label("平方");
Button b=new Button("=");
b.addActionListener(new MyMonitor());
setLayout(new FlowLayout());
add(n1);
add(f);
add(b);
add(n2);
n1.addActionListener(new TFActionListener());
pack();
setVisible(true);
addWindowListener 
(
		new WindowAdapter()
		{
		public void windowClosing(WindowEvent e)
		{
		setVisible(false);
		System.exit(0);
		}
		}
);
}
private class MyMonitor implements ActionListener{
public void actionPerformed (ActionEvent e){
int a=Integer.parseInt(n1.getText());
n2.setText(""+(a*a));
}
}
}

記得!記得!記得!不懂的話評論區(qū)或者私信問我哈鐵鐵們!

還有就是求波關(guān)注唄,我努力日更,鐵鐵們,生活不易哎!

在這里插入圖片描述

到此這篇關(guān)于Java窗口精細(xì)全方位講解的文章就介紹到這了,更多相關(guān)Java窗口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis-plus?查詢傳入?yún)?shù)Map,返回List<Map>方式

    mybatis-plus?查詢傳入?yún)?shù)Map,返回List<Map>方式

    這篇文章主要介紹了mybatis-plus?查詢傳入?yún)?shù)Map,返回List<Map>方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java的三種隨機(jī)數(shù)生成方式的實現(xiàn)方法

    java的三種隨機(jī)數(shù)生成方式的實現(xiàn)方法

    這篇文章主要介紹了java的三種隨機(jī)數(shù)生成方式的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java Math.round函數(shù)詳解

    Java Math.round函數(shù)詳解

    這篇文章主要介紹了Java Math.round函數(shù)詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • spring boot 2.x html中引用css和js失效問題及解決方法

    spring boot 2.x html中引用css和js失效問題及解決方法

    這篇文章主要介紹了spring boot 2.x html中引用css和js失效,需要的朋友可以參考下
    2018-11-11
  • Java如何獲取JSONObject內(nèi)指定字段key的value值

    Java如何獲取JSONObject內(nèi)指定字段key的value值

    這篇文章主要介紹了Java如何獲取JSONObject內(nèi)指定字段key的value值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺談Spring Cloud Eureka 自我保護(hù)機(jī)制

    淺談Spring Cloud Eureka 自我保護(hù)機(jī)制

    這篇文章主要介紹了淺談Spring Cloud Eureka 自我保護(hù)機(jī)制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Mybatis攔截器實現(xiàn)自定義需求

    Mybatis攔截器實現(xiàn)自定義需求

    本文主要介紹了Mybatis攔截器實現(xiàn)自定義需求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 詳解SpringBoot實現(xiàn)JPA的save方法不更新null屬性

    詳解SpringBoot實現(xiàn)JPA的save方法不更新null屬性

    直接調(diào)用原生Save方法會導(dǎo)致null屬性覆蓋到數(shù)據(jù)庫,使用起來十分不方便。本文詳細(xì)的介紹了如何解決這個問題,非常具有實用價值,需要的朋友可以參考下
    2018-12-12
  • JVM內(nèi)置函數(shù)Intrinsics介紹

    JVM內(nèi)置函數(shù)Intrinsics介紹

    這篇文章主要介紹了JVM內(nèi)置函數(shù)Intrinsics,我們將學(xué)習(xí)什么是intrinsics(內(nèi)部/內(nèi)置函數(shù)),以及它們?nèi)绾卧贘ava和其他基于JVM的語言中工作,需要的朋友可以參考一下
    2022-02-02
  • 使用hibernate和struts2實現(xiàn)分頁功能的示例

    使用hibernate和struts2實現(xiàn)分頁功能的示例

    本篇文章主要介紹了使用hibernate和struts2實現(xiàn)分頁功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論