Java中Swing程式設計JFrame視窗的使用
Java中GUI程式的編寫離不開Swing和AWT程式設計。
二者的區別和聯絡:
AWT(Abstract Window Toolkit):抽象視窗工具包,早期編寫圖形介面應用程式的包。
Swing :為解決 AWT 存在的問題而新開發的圖形介面包。Swing是對AWT的改良和擴充套件。
AWT的圖形函式與作業系統提供的圖形函式有著一一對應的關係。當我們利用 AWT構件圖形使用者介面的時候,實際上是在利用作業系統的圖形庫。AWT是依靠本地方法來實現功能的,所以AWT控制元件稱為“重量級控制元件”。 而Swing ,不僅提供了AWT 的所有功能,還用純粹的Java程式碼對AWT的功能進行了大幅度的擴充。由於 Swing是用純粹的Java程式碼來實現的,因此Swing控制元件在各平臺通用。因為Swing不使用本地方法,故Swing控制元件稱為“輕量級控制元件”。
Swing元件包含JFrame, JApplet, JDialog和JWindow等容器,我們簡單地學習下JFrame的基本使用。
使用:
繼承JFrame類,初始化視窗,新增按鈕、顯示框、文字框等,設定大小、設定可見、設定字型、新增響應事件,將容器JFrame例項設定為可見。
程式碼如下:
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class myFrame extends JFrame {
private static final long serialVersionUID = 1L;
static String path = null;
public static void main(final String[] args) {
// 畫出視窗
final JFrame frame = new myFrame();
frame.setLayout(null);
frame.setTitle("myFrame");
frame.setSize(400, 170);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 新增按鈕
final JButton btn1 = new JButton("瀏覽");
final JButton btn2 = new JButton("確定");
btn1.setBounds(80, 70, 60, 25);
btn2.setBounds(240, 70, 60, 25);
btn1.setVisible(true);
btn2.setVisible(true);
frame.add(btn1);
frame.add(btn2);
// 設定字型
final Font font = new Font("宋體", Font.BOLD, 11);
btn1.setFont(font);
btn2.setFont(font);
// 新增顯示框
final JLabel label = new JLabel("路徑:");
label.setBounds(60, 20, 50, 25);
label.setVisible(true);
label.setFont(font);
frame.add(label);
// 新增文字框
final JTextField textField = new JTextField();
textField.setBounds(120, 20, 190, 22);
textField.setVisible(true);
frame.add(textField);
frame.setVisible(true);
// 為按鈕新增事件
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
final int returnVal = chooser.showOpenDialog(btn1);
if (returnVal == JFileChooser.APPROVE_OPTION) {
final File file = chooser.getSelectedFile();
path = file.getAbsolutePath();
textField.setText(path);
}
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final myFrame myFrame = new myFrame();
myFrame.addInfo(path);
}
});
// 為文字框新增事件
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
if (new File(textField.getText()).isDirectory()) {
path = textField.getText();
} else {
final myFrame myFrame = new myFrame();
myFrame.addInfo("路徑名錯誤");
}
}
});
}
public void addInfo(final String string) {
final JFrame f = new JFrame("提示");
f.setLayout(null);
f.setBounds(40, 40, 300, 100);
f.setVisible(true);
final JLabel label = new JLabel(string);
label.setBounds(30, 20, 250, 20);
final Font f1 = new Font("宋體", Font.BOLD, 12);
label.setFont(f1);
f.add(label);
}
}
測試:
- 通過文字框輸入錯誤路徑並回車:
- 通過選擇框選擇正確路徑:
相關推薦
Java中Swing程式設計JFrame視窗的使用
Java中GUI程式的編寫離不開Swing和AWT程式設計。 二者的區別和聯絡: AWT(Abstract Window Toolkit):抽象視窗工具包,早期編寫圖形介面應用程式的包。 Swing :為解決 AWT 存在的問題而新開發的圖形介面包。S
Java開發Swing實戰JFrame和JTabbedPane容器的用法詳細解析
概述: 專案是一個桌面程式,涉及標籤和按鈕元件、佈局管理器元件、面板元件、列表框和下拉框元件等元件,以及Swing事件處理機制。 下面先從最基礎的介面開始。 /** @author: lishuai @date: 2018/11/26 13:51 */ public cl
關於Java中GUI程式設計記錄
import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing
java中如何對JFrame進行設定背景顏色和背景圖片
/** * 給JFrame 新增一個背景圖案。 */ package com.swingpractise; import javax.swing.*; public class JFrameBackground4 extends JFrame { //建立一個JLayeredPane用於分層的。 JLaye
java中NIO程式設計另一種實現超實用
除了普通的Socket與ServerSocket實現的阻塞式通訊外,Java提供了非阻塞式通訊的NIO API。先看一下NIO的實現原理。 從圖中可以看出,伺服器上所有Channel(包括ServerSocketChannel和SocketCha
java中swing上傳圖片讀取顯示
public static void eventOnImport(JButton upload) { ByteArrayOutputStream baos = null; JFileChooser chooser = new JFileChooser(); chooser.
Java中使用元件編寫視窗實現網路圖片的顯示
這篇文章使用Java元件顯示視窗,在通過輸入的圖片url地址在視窗中顯示出來,可作為一個網路圖片檢視器,感興趣的可以打包成jar或者.exe檔案方便使用,這裡我只掛出了原始碼,效果如下圖。 package com.rain.image; imp
Java核心(Swing 程式設計4-列表元件、文字元件、常用時間監聽器)
一、列表元件 Swing 中提供了兩種列表元件,分別為下拉列表框與列表框。下拉列表框與列表框都是帶有一系列專案的元件,使用者可以從中選擇需要的專案。列表框較下拉列表框更直觀,它將所有的專案羅列在列表框中;但下拉列表框較列表框更為便捷、美觀,它將所有的專案隱藏起來,當用戶
JAVA中如何在Jframe面板插入背景圖片
=========================================更新線====================================== 這段時間工作一直很忙,好久沒有看自己的部落格,也沒有想到以前寫的一個小問題有這麼多人看,看到評
Java核心(Swing 程式設計2-標籤、圖示、佈局)
一、標籤元件與圖示 在 Swing 中顯示文字或提示資訊的方法是使用標籤,它支援文字字串和圖示。在應用程式的使用者介面中,一個簡短的文字標籤可以使使用者知道這些元件的目的,所以標籤在 Swing 中是比較常用的元件。 1.1 標籤的使用 標籤由 JLabel
java程式設計過程中中如何在JFrame面板新增圖片作為背景
/** * 作者:李鵬飛* 功能:新增背景演示 * 時間:2013/9/9 */ package www.csdn.java.lipf; import java.awt.FlowLayout;
Java中awt和swing的關系和區別
界面 及其 軟件 功能性 圖形圖像 自己 輕量級 c++程序 控制 概述 awt是抽象組件窗口工具包,是Java最早的用於編寫圖形應用程序的開發包。 Swing是為了補充awt的一些功能性的缺失問題而開發的包,以awt為基礎的。 軟件包 java.awt 的描述 包含用於創
【Java】Swing中JTextPane中如何繪制行號
代碼 name panel 9.png 自己 顯示行號 led att gin Oracle在JTextPane類中並沒有直接提供顯示行號的方法,所以這個功能應該由程序員自己來完成,筆者發現網上很多的顯示行號的代碼都存在一個問題,就是不準確,特別是在行數變多了以後。 筆者
Java併發程式設計的藝術之八----java中的併發工具類
1.等待多執行緒完成的countDownLatch CountDownLatch允許一個或多個執行緒等待其他執行緒完成操作。 執行緒中,讓一個執行緒等待最簡單的做法是使用join方法,執行緒A中呼叫B.join方法,說明讓執行緒A等待執行緒B完成之後再執行。 實現原理:不停檢查執行緒是否
Java併發程式設計的藝術之五----java中的鎖
1.Lock介面 鎖是用來控制多個執行緒訪問共享資源的方式,一般來說,一個鎖能夠防止多個執行緒同時訪問共享資源(但是有些鎖可以允許多個執行緒併發的訪問共享資源,比如讀寫鎖)。Java SE 5之後,併發包中新增了Lock介面(以及相關實現類)用來實現鎖功能,在使用時需要顯式地獲取和釋放鎖。雖然它
Java中向JFrame中插入圖片的程式碼
資料夾“影象”是與“src”同級的目錄檔案 package com.main; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class Exa
Java中的十個”單行程式碼程式設計”(One Liner)
本文列舉了十個使用一行程式碼即可獨立完成(不依賴其他程式碼)的業務邏輯,主要依賴的是 Java8 中的 Lambda 和 Stream 等新特性以及 try-with-resources、JAXB 等。 1. 對列表/陣列中的每個元素都乘以2
java程式設計——JAVA 中的棧與堆
簡介 JAVA在程式執行時,在記憶體中劃分5片空間進行資料的儲存。分別是: 暫存器。 本地方法區。 方法區。 棧。 堆。 棧stack和堆heap這兩個概念很重要 棧: 函式中定義的基本型別變數,物件的引用變數都在函式的棧記憶體中分配。
安全程式設計(十四)- Java中throw和throws的區別
1.粗淺來說 throw是一個語句丟擲異常,throws是一個方法丟擲異常; throw不是和try-catch-finally配套使用就是和throws配套使用,而throws可
java程式設計入門2 java中的四種訪問許可權控制
在java中提供了四種訪問許可權控制:預設訪問許可權(包訪問許可權),public,private以及protected 只有預設訪問許可權(包訪問許可權)和public能用來修飾類(不包括內部類) 修飾變數和方法這四種許可權均可 1.public 修飾類表示該類對其他所有類可見 修飾一個類的變數和