欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

Java編程

當(dāng)前位置:主頁 > 軟件編程 > Java編程 >

Java編程實現(xiàn)swing圓形按鈕實例代碼

來源:本站原創(chuàng)|時間:2020-01-10|欄目:Java編程|點擊: 次

Swing是一個為Java設(shè)計的GUI工具包。

Swing是JAVA基礎(chǔ)類的一部分。

Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。

Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺運行,這一點不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各種操作系統(tǒng)默認(rèn)的特有主題),然而不是真的使用原生平臺提供的設(shè)備,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺上使用JAVA支持的任意面板。輕量級組件的缺點則是執(zhí)行速度較慢,優(yōu)點就是可以在所有平臺上采用統(tǒng)一的行為。

下面看看實現(xiàn)按鈕的簡單實例:

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

class RButton extends JButton {
	public RButton(String label) {
		super(label);
		// 這些聲明把按鈕擴(kuò)展為一個圓而不是一個橢圓。
		Dimension size = getPreferredSize();
		size.width = size.height = Math.max(size.width, size.height);
		setPreferredSize(size);
		// 這個調(diào)用使JButton不畫背景,而允許我們畫一個圓的背景。
		setContentAreaFilled(false);
		this.setBackground(Color.GRAY);
	}

	// 畫圓的背景和標(biāo)簽
	protected void paintComponent(Graphics g) {
		if (getModel().isArmed()) {
			// 你可以選一個高亮的顏色作為圓形按鈕類的屬性
			g.setColor(Color.lightGray);
		} else {
			g.setColor(getBackground());
		}
		g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);
		// 這個調(diào)用會畫一個標(biāo)簽和焦點矩形。
		super.paintComponent(g);
	}

	// 用簡單的弧畫按鈕的邊界。
	protected void paintBorder(Graphics g) {
		g.setColor(getForeground());
		g.drawOval(0, 0, getSize().width - 1, getSize().height - 1);
	}

	// 偵測點擊事件
	Shape shape;

	public boolean contains(int x, int y) {
		// 如果按鈕改變大小,產(chǎn)生一個新的形狀對象。
		if (shape == null || !shape.getBounds().equals(getBounds())) {
			shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight());
		}
		return shape.contains(x, y);
	}

	// 測試程序
	public static void main(String[] args) {
		// 產(chǎn)生一個帶‘Jackpot'標(biāo)簽的按鈕。
		JButton button = new RButton("Jackpot");
		ImageIcon ic = new ImageIcon("E://clientForMssql//Icons//item_group.gif");
		JButton button2 = new JButton(ic);
		button.setBackground(Color.GRAY);
		// 產(chǎn)生一個框架以顯示這個按鈕。
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// frame.getContentPane().setBackground(Color.GRAY);
		frame.getContentPane().add(button);
		frame.getContentPane().add(button2);
		frame.getContentPane().setLayout(new FlowLayout());
		frame.setSize(200, 200);
		frame.setVisible(true);
	}
}

結(jié)果:

接著再分享一則實現(xiàn)簡單點擊事件的按鈕Java示例。

這是一個關(guān)于制作圓形Swing按鈕的技巧。事實上,這個技巧中的知識方便的適用于任何形狀的按鈕,但我們只作一個圓形的按鈕。當(dāng)你制作一個圓形的按鈕時,需要做兩件事。第一件事是重載一個適當(dāng)?shù)睦L畫方法以畫出一個圓形。第二件事是設(shè)置一些事件使得只有當(dāng)你點擊圓形按鈕的范圍中的時侯按鈕才會作出響應(yīng)(不是包含圓形按鈕的矩形的范圍中)。

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class RoundButton extends JButton {
	public RoundButton(String label) {
		super(label);
		// 這些聲明把按鈕擴(kuò)展為一個圓而不是一個橢圓。
		Dimension size = getPreferredSize();
		size.width = size.height = Math.max(size.width, size.height);
		setPreferredSize(size);

		// 這個調(diào)用使JButton不畫背景,而允許我們畫一個圓的背景。
		setContentAreaFilled(false);
	}

	// 畫圓的背景和標(biāo)簽
	protected void paintComponent(Graphics g) {
		if (getModel().isArmed()) {
			// 你可以選一個高亮的顏色作為圓形按鈕類的屬性
			g.setColor(Color.lightGray);
		} else {
			g.setColor(getBackground());
		}
		g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);
		// 這個調(diào)用會畫一個標(biāo)簽和焦點矩形。
		super.paintComponent(g);
	}

	// 用簡單的弧畫按鈕的邊界。
	protected void paintBorder(Graphics g) {
		g.setColor(getForeground());
		g.drawOval(0, 0, getSize().width - 1, getSize().height - 1);
	}

	// 偵測點擊事件
	Shape shape;

	public boolean contains(int x, int y) {
		// 如果按鈕改變大小,產(chǎn)生一個新的形狀對象。
		if (shape == null || !shape.getBounds().equals(getBounds())) {
			shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight());
		}
		return shape.contains(x, y);
	}

	// 測試程序
	public static void main(String[] args) {
		// 產(chǎn)生一個帶‘Jackpot'標(biāo)簽的按鈕。
		JButton button = new RoundButton("Jackpot");
		button.setBackground(Color.green);
		// 產(chǎn)生一個框架以顯示這個按鈕。
		JFrame frame = new JFrame();
		frame.getContentPane().setBackground(Color.yellow);
		frame.getContentPane().add(button);
		frame.getContentPane().setLayout(new FlowLayout());
		frame.setSize(150, 150);
		frame.setVisible(true);
	}
}

結(jié)果:

點擊事件:

由于我們想保留JButton的大部分功能,我們讓RoundButton類繼承了JButton類。在RoundButton的構(gòu)造方法中,setContentAreaFilled()方法被調(diào)用。這就讓按鈕畫了一個矩形的焦點區(qū),但不畫背景。

現(xiàn)在我們需要畫一個圓的背景。這是通過重載paintComponent()方法實現(xiàn)的。那個方法使用Graphics.fillOval()方法畫一個實心的圓。然后paintComponent()方法調(diào)用super.paintComponent()在這個實心圓的上面畫了一個標(biāo)簽。

這個例子還重載了paintBorder()方法以在圓形按鈕的邊界上畫一個邊。如果你不想要邊框,你也可以不重載這個方法。這個方法調(diào)用了Graphics.drawOval()方法以在圓的邊界上畫一個細(xì)的邊框。

注意:在JDKTM1.2.2中,當(dāng)你將鼠標(biāo)拖進(jìn)或拖出按鈕的范圍時,JButton的行為有一個小BUG。理論上,當(dāng)你在圓形按鈕上點擊鼠標(biāo)然后拖動鼠標(biāo)離開按鈕的邊界時,按鈕應(yīng)該改變它的外形。當(dāng)你拖動鼠標(biāo)進(jìn)入按鈕的邊界內(nèi)時,按鈕應(yīng)回復(fù)它的外形。不幸的是,包含這個行為的代碼不能調(diào)用contains()方法。代替它的是只使用按鈕的‘限制范圍'(這是包含按鈕的最小矩形范圍)注意,如果你在圓形邊界內(nèi)輕微的拖動鼠標(biāo),也就是說離開圓形的范圍但不離開邊界,按鈕將不會改變它的外形。

總結(jié)

以上就是本文關(guān)于Java編程實現(xiàn)swing圓形按鈕實例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

上一篇:Java編程實現(xiàn)深度優(yōu)先遍歷與連通分量代碼示例

欄    目:Java編程

下一篇:Java編程關(guān)于子類重寫父類方法問題的理解

本文標(biāo)題:Java編程實現(xiàn)swing圓形按鈕實例代碼

本文地址:http://mengdiqiu.com.cn/a1/Javabiancheng/8404.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有