Java學習筆記之SWING — 基本SWING程式(插曲--關於Accelerator Key)

來源:互聯網
上載者:User

前言:沒事在看《Java Swing, 2nd Edition》,看到有個東西還是蠻有趣的說,就是Accelerator key,呵呵,好像要配合Alt一起用才能起到作用。蠻多東西是看了程式後才發現原文的意思的。這次算是插曲,不在MapsEditor的範圍之內。順便提一下,中午起來有3到4個人加了群,蠻開心的。高手也好初學也罷,大家重要的是交流,大膽說出自己的想法,錯了就錯了,誰沒錯過啊……

     關於Accelerator key,在做GUI的時候還是比較重要的吧,至少以前認為那些不用滑鼠的人蠻高手的,呵呵,自己也會去刻意記些常用的快速鍵,在Windows下用用還算湊合那,呵呵。程式是從書上搬下來的,覺得蠻有意思的,大家可以看看。

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

// Shows how displayedMnemonic and labelFor properties work together
public class MnemonicLabels ...{
  public static void main(String[] args) ...{

    JTextField firstField = new JTextField(10);
    JTextField middleField = new JTextField(10);
    JTextField lastField = new JTextField(10);

    // Create labels and mnemonics.
    JLabel firstLabel = new JLabel("First Name", JLabel.RIGHT);
    firstLabel.setDisplayedMnemonic('F');
    firstLabel.setLabelFor(firstField);

    JLabel middleLabel = new JLabel("Middle Initial", JLabel.RIGHT);
    middleLabel.setDisplayedMnemonic('I');
    middleLabel.setDisplayedMnemonicIndex(7); // Requires 1.4
    middleLabel.setLabelFor(middleField);

    JLabel lastLabel = new JLabel("Last Name", JLabel.RIGHT);
    lastLabel.setDisplayedMnemonic('L');
    lastLabel.setLabelFor(lastField);

    // Layout and display
    JPanel p = new JPanel( );
    p.setLayout(new GridLayout(3, 2, 5, 5));
    p.add(firstLabel);
    p.add(firstField);
    p.add(middleLabel);
    p.add(middleField);
    p.add(lastLabel);
    p.add(lastField);

    JFrame f = new JFrame("MnemonicLabels");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setContentPane(p);
    f.pack( );
    f.setVisible(true);
  }
}

 

     有Java環境的可以拷貝去然後編譯運行看看,然後分別按Alt+F、Alt+I、Alt+L,Foucs就會在三個TextField之間轉換。關鍵的是firstLabel.setDisplayedMnemonic('F')和firstLabel.setLabelFor(firstField),前一個setDisplayedMnemonic(char)選定哪個character為快速鍵,就像VC裡面的“&”一樣的功能,而後面這個setLabelFor(comp)則表明你按下相應的快速鍵(加速鍵)後焦點定位到哪個控制項上(當然要有焦點的控制項)。需要注意的是第二個快速鍵的設定“middleLabel.setDisplayedMnemonicIndex(7);”這個需要SDK1.4的支援,這個的作用就是設定顯示的底線為第幾個字元。很明顯,我們注意到對於“I”來說,“Middle Initial”中前後有兩個“I”,而這裡是部分大小寫,所以按照第一個或者第三個的做法的話,程式會預設JLabel中文字滿足的第一個字元加底線,也就是這個樣子了“Middle Initial”,我們要的是“Middle Initial”的效果,所以把底線設定到第七個字元“I”上面。其他也沒什麼好玩的了,除了這個應該都能摸索懂吧,呵呵。小插曲那~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.