java介面編程(2),java介面編程

來源:互聯網
上載者:User

java介面編程(2),java介面編程

 本文是自己學習所做筆記,歡迎轉載,但請註明出處:http://blog.csdn.net/jesson20121020  

上節建立了視窗,這是其他組件的容器,這節就來建立按鈕。

建立按鈕,只需要在希望出現的地方調用JButton的構造器即可。

  JButton是一個組件,它有自己的小視窗,能作為整個更新過程的一部分而自動被重繪。也就是說,你不必顯示繪製一個按鈕或者別的類型的控制項,只要將其放在表單上,它們可以自動繪製自己。採用上節的例子,在其基礎上修改如下:

public class SwingTest extends JFrame{private static JLabel label;private static SwingTest st;private JButton b1;private JButton b2;public SwingTest() {super("Hello Swing");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300, 100);setVisible(true);//設定表單布局 setLayout(new FlowLayout());label = new JLabel("A Label");add(label);//添加按鈕b1 = new JButton("按鈕1");b2 = new JButton("按鈕2");add(b1);add(b2);}/** * @param args * @throws InterruptedException  */public static void main(String[] args) throws InterruptedException {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubst = new SwingTest();}});/*TimeUnit.SECONDS.sleep(1);SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {label.setText("Hi,this is a different");}});*/}}
  這裡引入了一個布局管理器,在向JFrame添加任何組件之前,先給出一個新的FlowLayout類型的“布局管理器”。布局管理器是面板用來隱式的決定控制項在表單上的位置的工具。預設的是BoardLayout管理布局,每加入一個控制項,將完全覆蓋其他的控制項,所以這裡不適用。而FlowLayout使得控制項可以在表單上從左至右,從上到下連續的分布。效果如下:


        有了按鈕,當然要有相應的事件才可以,所以我們下面為按鈕添加個單擊事件。

  在添加單擊事件之前,先添加一個文本輸入框JTextField,接著,建立監聽按鈕單擊事件的類,最後就是將該監聽器綁定到按鈕上即可,這裡的事件是單擊按鈕,將按鈕的名稱顯示在文本輸入框中,完整代碼如下:

public class SwingTest extends JFrame{private static JLabel label;private static SwingTest st;private JButton b1;private JButton b2;private JTextField txt;public SwingTest() {super("Hello Swing");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300, 100);setVisible(true);//設定表單布局 setLayout(new FlowLayout());//添加標籤label = new JLabel("A Label");add(label);//添加文本輸入框txt = new JTextField(10);add(txt);//添加按鈕b1 = new JButton("按鈕1");b2 = new JButton("按鈕2");add(b1);add(b2);//添加事件b1.addActionListener(new ButtonListener());b2.addActionListener(new ButtonListener());}/** * @param args * @throws InterruptedException  */public static void main(String[] args) throws InterruptedException {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubst = new SwingTest();}});/*TimeUnit.SECONDS.sleep(1);SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {label.setText("Hi,this is a different");}});*/}class ButtonListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent event) {// TODO Auto-generated method stub//將按鈕的名稱顯示在TextField中txt.setText(((JButton)event.getSource()).getText());}}}
  效果如:


  這樣,就為按鈕添加了單擊事件,點擊按鈕,觸發相應的事件,將其名稱顯示在文本輸入框中。同樣,可以將事件監聽器寫成其名內部類,這樣會更方便,即可以寫成:

private ActionListener bl = new ActionListener() {@Overridepublic void actionPerformed(ActionEvent event) {// TODO Auto-generated method stubtxt.setText(((JButton)event.getSource()).getText());}};

      這裡的JTextField只能輸入單行文本,而文本地區JTextArea可以輸入多行文本以及更多的功能,而且還有一個比較常用的方法就是append(),在SwingTest() 方法中增加:

//添加文本地區txa = new JTextArea(5,10);add(txa);
      即可建立一個5行10列的文本地區,為了體現append()方法,我們增加兩個按鈕,點擊其中一個增加一行文本,點擊另一個清除所有文本,添加如下代碼:

//添加按鈕b1 = new JButton("add data");b2 = new JButton("clear data");add(b1);add(b2);b1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubtxa.append("this is JText Area\n");}});b2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubtxa.setText("");}});
  效果如下:

  可以看出,文本地區可以輸入多行文本,當然,也有其他的功能。




聯繫我們

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