日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

JavaGUI界面—窗口、按钮、文本框,及其解决按钮的中文乱码

發(fā)布時(shí)間:2023/12/29 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaGUI界面—窗口、按钮、文本框,及其解决按钮的中文乱码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一. Java圖形化界面開(kāi)發(fā)概述

通常情況下,java語(yǔ)言一般是用來(lái)開(kāi)發(fā)后臺(tái)程序的,所謂的后臺(tái)程序就是部署在服務(wù)器端的程序,默默的工作,用戶是看不到任何界面的。

事實(shí)上,我們使用java語(yǔ)言同樣可以完成圖形化界面程序的開(kāi)發(fā),而學(xué)習(xí)圖形化界面編程相對(duì)來(lái)說(shuō)就會(huì)有趣很多,因?yàn)樗?jiàn)即所得,也就是說(shuō),我們寫(xiě)的大部分代碼的執(zhí)行效果,是可以通過(guò)圖形化界面實(shí)實(shí)在在能夠看得到的。

java使用AWT和Swing相關(guān)的類(lèi)可以完成圖形化界面編程,其中AWT的全稱(chēng)是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI庫(kù),這個(gè)GUI庫(kù)提供了一些基本功能,但這個(gè)GUI庫(kù)的功能比較有限,所以后來(lái)sun公司又提供了Swing庫(kù)。通過(guò)使用AWT和Swing提供的圖形化界面組件庫(kù),java的圖形化界面編程非常簡(jiǎn)單,程序只需要依次創(chuàng)建所需的圖形組件,并以合適的方式將這些組件組織在一起,就可以開(kāi)發(fā)出非常美觀的用戶界面。

二. AWT 編程

2.1 AWT簡(jiǎn)介

? 當(dāng) JDK 1.0發(fā)布時(shí), Sun 提供了 一套基本的GUI類(lèi)庫(kù),這個(gè)GUI類(lèi)庫(kù)希望可以在所有平臺(tái)下都能運(yùn)行 , 這套基本類(lèi)庫(kù)被稱(chēng)為"抽象窗口工具集 CAbstract Window Toolkit )",它為Java應(yīng)用程序提供了基本的圖形組件 。 AWT是窗口框架,它從不同平臺(tái)的窗口系統(tǒng)中抽取出共同組件 , 當(dāng)程序運(yùn)行時(shí),將這些組件的創(chuàng)建和動(dòng)作委托給程序所在的運(yùn)行平臺(tái) 。 簡(jiǎn)而言之 ,當(dāng)使用 AWT 編寫(xiě)圖形界面應(yīng)用 時(shí), 程序僅指定了界面組件的位置和行為,并未提供真正的實(shí)現(xiàn),JVM調(diào)用操作系統(tǒng)本地的圖形界面來(lái)創(chuàng)建和平臺(tái) 一致的對(duì)等體 。

? 使用AWT創(chuàng)建的圖形界面應(yīng)用和所在的運(yùn)行平臺(tái)有相同的界面風(fēng)格 , 比如在 Windows 操作系統(tǒng)上,它就表現(xiàn)出 Windows 風(fēng)格 ; 在 UNIX 操作系統(tǒng)上,它就表現(xiàn)出UNIX 風(fēng)格 。 Sun 希望采用這種方式來(lái)實(shí)現(xiàn) " Write Once, Run Anywhere " 的目標(biāo) 。

2.2 AWT繼承體系

所有和 AWT 編程相關(guān)的類(lèi)都放在 java.awt 包以及它的子包中, AWT 編程中有兩個(gè)基類(lèi) :Component和 MenuComponent。

  • Component:代表一個(gè)能以圖形化方式顯示出來(lái),并可與用戶交互的對(duì)象,例如 Button 代表一個(gè)按鈕,TextField 代表 一個(gè)文本框等;
  • MenuComponent:則代表圖形界面的菜單組件,包括 MenuBar (菜單條)、 Menultem (菜單項(xiàng))等子類(lèi)。

其中 Container 是一種特殊的 Component,它代表一種容器,可以盛裝普通的 Component。

AWT中還有一個(gè)非常重要的接口叫LayoutManager ,如果一個(gè)容器中有多個(gè)組件,那么容器就需要使用LayoutManager來(lái)管理這些組件的布局方式。

2.3 Container容器

2.3.1 Container繼承體系

  • ? Winow是可以獨(dú)立存在的頂級(jí)窗口,默認(rèn)使用BorderLayout管理其內(nèi)部組件布局;
  • ? Panel可以容納其他組件,但不能獨(dú)立存在,它必須內(nèi)嵌其他容器中使用,默認(rèn)使用FlowLayout管理其內(nèi)部組件布局;
  • ? ScrollPane 是 一個(gè)帶滾動(dòng)條的容器,它也不能獨(dú)立存在,默認(rèn)使用 BorderLayout 管理其內(nèi)部組件布局;

2.3.2 常見(jiàn)API

Component作為基類(lèi),提供了如下常用的方法來(lái)設(shè)置組件的大小、位置、可見(jiàn)性等。

方法簽名方法功能
setLocation(int x, int y)設(shè)置組件的位置。
setSize(int width, int height)設(shè)置組件的大小。
setBounds(int x, int y, int width, int height)同時(shí)設(shè)置組件的位置、大小。
setVisible(Boolean b):設(shè)置該組件的可見(jiàn)性。

Container作為容器根類(lèi),提供了如下方法來(lái)訪問(wèn)容器中的組件

方法簽名方法功能
Component add(Component comp)向容器中添加其他組件 (該組件既可以是普通組件,也可以 是容器) , 并返回被添加的組件 。
Component getComponentAt(int x, int y):返回指定點(diǎn)的組件 。
int getComponentCount():返回該容器內(nèi)組件的數(shù)量 。
Component[] getComponents():返回該容器內(nèi)的所有組件 。

2.3.3 容器演示

2.3.3.1 Window

import java.awt.*;public class FrameDemo {public static void main(String[] args) {//1.創(chuàng)建窗口對(duì)象Frame frame = new Frame("這是第一個(gè)窗口容器");//設(shè)置窗口的位置和大小frame.setBounds(100,100,500,300);//設(shè)置窗口可見(jiàn)frame.setVisible(true);} }

2.3.3.2 Panel

public class PanelDemo {public static void main(String[] args) {//1.創(chuàng)建Frame容器對(duì)象Frame frame = new Frame("這里在測(cè)試Panel");//2.創(chuàng)建Panel容器對(duì)象Panel panel = new Panel();//3.往Panel容器中添加組件panel.add(new TextField("這是一個(gè)測(cè)試文本"));panel.add(new Button("這是一個(gè)測(cè)試按鈕"));//4.把Panel添加到Frame中frame.add(panel);//5.設(shè)置Frame的位置和大小frame.setBounds(30,30,500,300);//6.設(shè)置Frame可見(jiàn)frame.setVisible(true);} }

為什么其中出現(xiàn)亂碼了呢?
由于IDEA默認(rèn)使用utf-8進(jìn)行編碼,但是當(dāng)前我們執(zhí)行代碼是是在windows系統(tǒng)上,而windows操作系統(tǒng)的默認(rèn)編碼是gbk,所以會(huì)亂碼,如果出現(xiàn)了亂碼,那么只需要在運(yùn)行當(dāng)前代碼前,設(shè)置一個(gè)jvm參數(shù) -Dfile.encoding=gbk即可。



2.3.3.3 ScrollPane

import java.awt.*;public class ScrollPaneDemo {public static void main(String[] args) {//1.創(chuàng)建Frame窗口對(duì)象Frame frame = new Frame("這里測(cè)試ScrollPane");//2.創(chuàng)建ScrollPane對(duì)象,并且指定默認(rèn)有滾動(dòng)條ScrollPane scrollPane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);//3.往ScrollPane中添加組件scrollPane.add(new TextField("這是測(cè)試文本"));scrollPane.add(new Button("這是測(cè)試按鈕"));//4.把ScrollPane添加到Frame中frame.add(scrollPane);//5.設(shè)置Frame的位置及大小frame.setBounds(30,30,500,300);//6.設(shè)置Frame可見(jiàn)frame.setVisible(true);} }

程序明明向 ScrollPane 容器中添加了 一個(gè)文本框和一個(gè)按鈕,但只能看到 一個(gè)按鈕,卻看不到文本框 ,這是為什么 呢?這是因?yàn)镾crollPane 使用 BorderLayout 布局管理器的緣故,而 BorderLayout 導(dǎo)致了該容器中只有一個(gè)組件被顯示出來(lái) 。

總結(jié)

以上是生活随笔為你收集整理的JavaGUI界面—窗口、按钮、文本框,及其解决按钮的中文乱码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。