java swing GUI窗口美化方式
java swing GUI窗口美化
一般我們寫出的窗口是這個(gè)樣子的,文本框和按鈕都不是太美觀,如果按鈕是原色的就更難看了。

今天發(fā)現(xiàn)了一個(gè)更加美觀的窗口模式

可以發(fā)現(xiàn)按鈕和文本框都已經(jīng)有了變化,給窗口潤色不少。
其實(shí),只需在調(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程序默認(rèn)使用Windows模式。
java GUI初步理解
什么是GUI
GUI既圖形用戶界面,是一種以圖形為主體的交互方式。
主要包括AWT組件以及Swing組件以及容器、布局和事件相關(guān)的類接口。
AWT是抽象窗口工具包的簡(jiǎn)稱,其中有像窗口、按鈕等組件。而Swing是基于AWT開發(fā)的,他的功能更加強(qiáng)大。目前大部分采用swing組件。
容器與布局
容器由Java.awt包提供(AWT中),Swing中由Java.swing包提供。
容器主要包括面板類(Panel)、窗口類(Window)、結(jié)構(gòu)類(Frame)。
容器分為:頂層容器、中間容器、特殊容器。
除頂層容器外,其他兩個(gè)不能單獨(dú)顯示,必須在一定容器中。
添加容器:使用add()方法。
下面讓我們看一個(gè)例子,了解一些其他的方法!
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)建窗口對(duì)象
? ? ? ? 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)建按鈕對(duì)象
? ? ? ? JButton but=new JButton("wdwdw");
? ? ? ? //添加按鈕到窗口
? ? ? ? frm.add(but);
? ? ? ? //設(shè)置關(guān)閉方式
? ? ? ? frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
?? ?}
}面板
面板就是可以將一個(gè)容器的界面分成不同的幾個(gè)部分,有助于美化界面。
JFrame面板默認(rèn)布局管理采用BorderLayout,最多管理五個(gè)組件。
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)建窗口對(duì)象
? ? ? ? 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è)置一個(gè)帶有滾動(dòng)面板的窗體
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("滾動(dòng)的窗體");
?? ??? ?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("就在這個(gè)屯!");
? ? ? ? //創(chuàng)建面板,添加組件
? ? ? ? JPanel p=new JPanel();
? ? ? ? p.add(ta);
? ? ? ? p.add(but);
? ? ? ? //創(chuàng)建滾動(dòng)面板
? ? ? ? JScrollPane sp=new JScrollPane();
? ? ? ? //設(shè)置上面創(chuàng)建的,面板為組件
? ? ? ? sp.setViewportView(p);
? ? ? ? //將滾動(dòng)面板設(shè)置為窗體內(nèi)容面板
? ? ? ? frm.setContentPane(sp);
? ? ? ? frm.setBounds(500,250,300,150);
? ? ? ? frm.setVisible(true);
?? ?}
}補(bǔ)充
設(shè)置水平或垂直分割的面板
JSplitPane
采用方法
setOrientation(int orientation) HORIZONAL_SPLIT------>豎直 VERTICAL_SPLIT---------->垂直 -setDividerLocation(double proportionalLocation)
設(shè)置比例
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析
這篇文章主要為大家介紹了Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
IDEA 2020.2 部署JSF項(xiàng)目的詳細(xì)過程
本文通過圖文并茂的形式教大家如何在IDEA中創(chuàng)建一個(gè)JSF項(xiàng)目及遇到問題的解決方法,感興趣的朋友跟隨小編一起看看吧2021-09-09
JAVA集成Freemarker生成靜態(tài)html過程解析
SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析
Mybatis配置映射文件中parameterType的用法講解
Spring Boot jar可執(zhí)行原理的徹底分析
ConcurrentModificationException日志關(guān)鍵字報(bào)警思考分析

