一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java編程實現swing圓形按鈕實例代碼

Java編程實現swing圓形按鈕實例代碼

2021-02-23 11:02samzheng99 Java教程

這篇文章主要介紹了Java編程實現swing圓形按鈕實例代碼,涉及兩個簡單的Java實現按鈕的代碼,其中一個具有偵測點擊事件的簡單功能,具有一定借鑒價值,需要的朋友可以參考。

swing是一個為java設計的gui工具包。

swing是java基礎類的一部分。

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

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

下面看看實現按鈕的簡單實例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
 
class rbutton extends jbutton {
    public rbutton(string label) {
        super(label);
        // 這些聲明把按鈕擴展為一個圓而不是一個橢圓。
        dimension size = getpreferredsize();
        size.width = size.height = math.max(size.width, size.height);
        setpreferredsize(size);
        // 這個調用使jbutton不畫背景,而允許我們畫一個圓的背景。
        setcontentareafilled(false);
        this.setbackground(color.gray);
    }
 
    // 畫圓的背景和標簽
    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);
        // 這個調用會畫一個標簽和焦點矩形。
        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) {
        // 如果按鈕改變大小,產生一個新的形狀對象。
        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) {
        // 產生一個帶‘jackpot'標簽的按鈕。
        jbutton button = new rbutton("jackpot");
        imageicon ic = new imageicon("e://clientformssql//icons//item_group.gif");
        jbutton button2 = new jbutton(ic);
        button.setbackground(color.gray);
        // 產生一個框架以顯示這個按鈕。
        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);
    }
}

結果:

Java編程實現swing圓形按鈕實例代碼

接著再分享一則實現簡單點擊事件的按鈕java示例。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
 
public class roundbutton extends jbutton {
    public roundbutton(string label) {
        super(label);
        // 這些聲明把按鈕擴展為一個圓而不是一個橢圓。
        dimension size = getpreferredsize();
        size.width = size.height = math.max(size.width, size.height);
        setpreferredsize(size);
 
        // 這個調用使jbutton不畫背景,而允許我們畫一個圓的背景。
        setcontentareafilled(false);
    }
 
    // 畫圓的背景和標簽
    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);
        // 這個調用會畫一個標簽和焦點矩形。
        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) {
        // 如果按鈕改變大小,產生一個新的形狀對象。
        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) {
        // 產生一個帶‘jackpot'標簽的按鈕。
        jbutton button = new roundbutton("jackpot");
        button.setbackground(color.green);
        // 產生一個框架以顯示這個按鈕。
        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);
    }
}

結果:

Java編程實現swing圓形按鈕實例代碼

點擊事件:

Java編程實現swing圓形按鈕實例代碼

由于我們想保留jbutton的大部分功能,我們讓roundbutton類繼承了jbutton類。在roundbutton的構造方法中,setcontentareafilled()方法被調用。這就讓按鈕畫了一個矩形的焦點區,但不畫背景。

現在我們需要畫一個圓的背景。這是通過重載paintcomponent()方法實現的。那個方法使用graphics.filloval()方法畫一個實心的圓。然后paintcomponent()方法調用super.paintcomponent()在這個實心圓的上面畫了一個標簽。

這個例子還重載了paintborder()方法以在圓形按鈕的邊界上畫一個邊。如果你不想要邊框,你也可以不重載這個方法。這個方法調用了graphics.drawoval()方法以在圓的邊界上畫一個細的邊框。

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

總結

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

原文鏈接:http://blog.csdn.net/zhengjianqi/article/details/2169421

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本无遮挡吸乳视频看看 | 草草视频在线观看最新 | a天堂中文在线 | 花房乱爱在线观看 | 免费观看大片毛片 | 黄色大片三级 | 三体动漫在线观看免费完整版2022 | 骚虎tv| 特黄特级毛片免费视 | 亚洲天堂精品在线观看 | 日本在线播放视频 | 欧美老女人b | 欧美va免费精品高清在线 | 高人先生免费观看全集 | 久久夜色噜噜噜亚洲AV0000 | 公交车揉捏大乳呻吟喘娇 | 亚洲阿v天堂2018在线观看 | 欧美精品国产第一区二区 | 日韩一区二区三区不卡视频 | 国产图片一区 | 国产精品亚洲精品青青青 | 女人和拘做受全过程免费 | 涩涩屋视频在线观看 | 我与肥熟老妇的性事 | 亚洲男人天堂久久 | 成人午夜视频一区二区国语 | 久久精品国产欧美日韩99热 | 国产精品久久久久影院色老大 | ai换脸明星造梦工厂忘忧草 | 免费日本视频 | 亚洲国产精品福利片在线观看 | 99精品国产久热在线观看66 | 小舞同人18av黄漫网站 | 国产麻豆精品入口在线观看 | 日韩精品中文字幕久久 | 九九精品视频在线观看 | 久久亚洲午夜牛牛影视 | 成年性午夜免费视频网站不卡 | 亚洲天堂中文 | 狠狠综合久久综合网站 | aa视频免费 |