Java學習筆記——卡式布局管理器的show

來源:互聯網
上載者:User

前言:啊哈,回到學校就是出效率啊~不過又想著去複習,但是坐到電腦前面又開始看程式了,沒辦法,命啊……近日在弄個聊天軟體,不是要登陸的麼。想給登陸的介面做個CardLayout,可是問題出來了。現在單獨拿出來貼幾個圖記錄下下。

    基本的JFrame的顯示程式:

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

class Demo ...{
    public static void main(String[] args) ...{
        
        CardLayout card = new CardLayout();
        JFrame frame = new JFrame ("CardLayout 布局測試");
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        JLabel label1 = new JLabel("lable1");
        JLabel label2 = new JLabel("label2");
        frame.setLayout (card);
        
        frame.add (label1, "l1");
        frame.add (label2, "l2");
        frame.setSize(100, 100);
        Container con = frame.getContentPane ();
        card.show (con, "l2");
        frame.setVisible (true);
    }
}

     這個介面我就不貼了,看了皮膚不是很舒服……來看下程式中的card的show上面的那個Container,或者式show的第一個參數con。本來我的程式不是這麼寫的,那句建立Container是沒有的,可是如果第一個參數放frame的話,編譯是能通過,不過會丟出Exception:

一看是wrong parent for CardLayout,看來是CardLayout.show(parent, String)這個參數有問題。看了下JDK,這個show是這樣的show (Container, String),那也就是說前面這個參數是Container的咯!!再看個類的繼承樹:

看到了吧,JFrame的爸爸的爸爸的爸爸,也就是爺爺的爸爸是java.awt.Container!也就是說JFrame是一種Container。為什麼這裡放置屬於Container的JFrame就不行呢?人能吃飯,男人、女人屬於人,能吃飯。太監是男人的繼承子類,能吃飯,但是沒嘴巴的太監是太監的繼承子類,雖然都是人,但是唯獨他/她/它不能吃飯,因為沒嘴巴。轉念一想,JFrame不是有個getContentPane()的Method麼,本來就是屬於Container的何必調用這個呢。既然多了這個方法,肯定不可能是return this的!通過一個不嚴謹的例子好像也證明不了什麼,但是看到很多程式中對JFrame的操作,大多調用一個getContentPane()後對這個Container做手腳,開始不明白,直接調用這個this就可以辦到的事情為什麼要多此一舉,原來在這裡等著我那。也是,swing和AWT本來就是那種剪不斷理還亂的關係,搞不好趁早SWT去……

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.