java swing GUI窗口美化方式
java swing GUI窗口美化
一般我們寫出的窗口是這個樣子的,文本框和按鈕都不是太美觀,如果按鈕是原色的就更難看了。
今天發(fā)現(xiàn)了一個更加美觀的窗口模式
可以發(fā)現(xiàn)按鈕和文本框都已經(jīng)有了變化,給窗口潤色不少。
其實,只需在調(diào)用程序前加上這段代碼即可。
try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } }catch(Exception e) { System.out.println(e); }
如果想改回來的話,把if語句中的“Nimbus”改為“Windows”就可以了,Java程序默認使用Windows模式。
java GUI初步理解
什么是GUI
GUI既圖形用戶界面,是一種以圖形為主體的交互方式。
主要包括AWT組件以及Swing組件以及容器、布局和事件相關(guān)的類接口。
AWT是抽象窗口工具包的簡稱,其中有像窗口、按鈕等組件。而Swing是基于AWT開發(fā)的,他的功能更加強大。目前大部分采用swing組件。
容器與布局
容器由Java.awt包提供(AWT中),Swing中由Java.swing包提供。
容器主要包括面板類(Panel)、窗口類(Window)、結(jié)構(gòu)類(Frame)。
容器分為:頂層容器、中間容器、特殊容器。
除頂層容器外,其他兩個不能單獨顯示,必須在一定容器中。
添加容器:使用add()方法。
下面讓我們看一個例子,了解一些其他的方法!
package testasdd; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Guione { ?? ?public static void main(String[] args) { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?//創(chuàng)建窗口對象 ? ? ? ? JFrame frm =new JFrame(); ? ? ? ? //設(shè)置標(biāo)題 ? ? ? ? frm.setTitle("我的世界"); ? ? ? ? //設(shè)置布局 ? ? ? ? frm.setLayout(new BorderLayout()); ? ? ? ? //設(shè)置顯示位置及大小 ? ? ? ? frm.setBounds(500, 200, 200, 100); ? ? ? ? //設(shè)置為可顯示的窗口 ? ? ? ? frm.setVisible(true); ? ? ? ? //創(chuàng)建按鈕對象 ? ? ? ? JButton but=new JButton("wdwdw"); ? ? ? ? //添加按鈕到窗口 ? ? ? ? frm.add(but); ? ? ? ? //設(shè)置關(guān)閉方式 ? ? ? ? frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ?? ?} }
面板
面板就是可以將一個容器的界面分成不同的幾個部分,有助于美化界面。
JFrame面板默認布局管理采用BorderLayout,最多管理五個組件。
package testasdd; import java.awt.*; import javax.swing.*; import javax.swing.JFrame; import javax.swing.JPanel; public class Guione { ?? ?public static void main(String[] args) { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?//創(chuàng)建窗口對象 ? ? ? ? JFrame frm =new JFrame(); ? ? ? ? //設(shè)置標(biāo)題 ? ? ? ? frm.setTitle("我的世界"); ? ? ? ? //設(shè)置關(guān)閉方式 ? ? ? ? frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ? ? ? ?? ? ? ? ? frm.setVisible(true); ? ? ? ?? ? ? ? ? JPanel top=new JPanel(); ? ? ? ? frm.add(top,BorderLayout.NORTH); ? ? ? ? //設(shè)置提示標(biāo)簽并添加顯示信息 ? ? ? ? JLabel show=new JLabel(); ? ? ? ? show.setText("TERRARIA"); ? ? ? ? //創(chuàng)建輸入框 ? ? ? ? JTextField input =new JTextField(); ? ? ? ? //設(shè)置為可編輯 ? ? ? ? input.setEditable(true); ? ? ? ? //左側(cè)輸入 ? ? ? ? input.setHorizontalAlignment(SwingConstants.LEFT); ? ? ? ? //20列 ? ? ? ? input.setColumns(20); ? ? ? ? //創(chuàng)建按鈕 ? ? ? ? JButton but=new JButton("提交"); ? ? ? ? //顯示 ? ? ? ? top.add(show); ? ? ? ? top.add(input); ? ? ? ? top.add(but); ?? ?} }
設(shè)置一個帶有滾動面板的窗體
package testasdd; import java.awt.*; import javax.swing.*; import javax.swing.JFrame; import javax.swing.JPanel; public class Guione { ?? ?public static void main(String[] args) { ?? ??? ?JFrame frm=new JFrame(); ?? ??? ?frm.setTitle("滾動的窗體"); ?? ??? ?frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ?? ??? ? ?? ??? ?//創(chuàng)建文本框 ?? ??? ?JTextArea ta=new JTextArea(); ?? ??? ?//設(shè)置行數(shù) ?? ??? ?ta.setRows(10); ?? ??? ?//設(shè)置列數(shù) ? ? ? ? ta.setColumns(25); ? ? ? ? //設(shè)置初始文本 ? ? ? ? ta.setText("我的老家"); ? ? ? ? //設(shè)置按鈕 ? ? ? ? JButton but=new JButton("就在這個屯!"); ? ? ? ? //創(chuàng)建面板,添加組件 ? ? ? ? JPanel p=new JPanel(); ? ? ? ? p.add(ta); ? ? ? ? p.add(but); ? ? ? ? //創(chuàng)建滾動面板 ? ? ? ? JScrollPane sp=new JScrollPane(); ? ? ? ? //設(shè)置上面創(chuàng)建的,面板為組件 ? ? ? ? sp.setViewportView(p); ? ? ? ? //將滾動面板設(shè)置為窗體內(nèi)容面板 ? ? ? ? frm.setContentPane(sp); ? ? ? ? frm.setBounds(500,250,300,150); ? ? ? ? frm.setVisible(true); ?? ?} }
補充
設(shè)置水平或垂直分割的面板
JSplitPane
采用方法
setOrientation(int orientation) HORIZONAL_SPLIT------>豎直 VERTICAL_SPLIT---------->垂直 -setDividerLocation(double proportionalLocation)
設(shè)置比例
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 動態(tài)模擬操作系統(tǒng)進程調(diào)度算法
這篇文章主要介紹了采用java語言編程模擬N個進程采用動態(tài)高優(yōu)先權(quán)優(yōu)先進程調(diào)度算法。文中代碼具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下2021-12-12完美解決Spring Boot前端的Access-Control-Allow-Origin跨域問題
這篇文章主要介紹了完美解決Spring Boot前端的Access-Control-Allow-Origin跨域問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05詳解Java8?CompletableFuture的并行處理用法
Java8中有一個工具非常有用,那就是CompletableFuture,本章主要講解CompletableFuture的并行處理用法,感興趣的小伙伴可以了解一下2022-04-04Spring Integration 實現(xiàn)消息驅(qū)動的詳細步驟
Spring Integration是一個用于構(gòu)建消息驅(qū)動的中間件輕量級框架,它提供了一種模型和工具,用于在Spring應(yīng)用程序中實現(xiàn)企業(yè)集成模式,這篇文章主要介紹了Spring Integration 實現(xiàn)消息驅(qū)動,需要的朋友可以參考下2024-05-05如何讓java只根據(jù)數(shù)據(jù)庫表名自動生成實體類
今天給大家?guī)淼闹R是關(guān)于Java的,文章圍繞著如何讓java只根據(jù)數(shù)據(jù)庫表名自動生成實體類展開,文中有非常詳細的介紹,需要的朋友可以參考下2021-06-06使用EasyPoi完成復(fù)雜一對多excel表格導(dǎo)出功能全過程
這篇文章主要介紹了使用EasyPoi完成復(fù)雜一對多excel表格導(dǎo)出功能全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12