国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Swing系列之JTextField(單行文本框)

DevTalking / 2591人閱讀

摘要:介紹是一個輕量級組件,它允許編輯單行文本。把字段文本用作針對的命令字符串。右對齊尾部對齊在所需的字段文本尺寸小于為它分配的尺寸時使用。這是由和方法確定的。如果具有操作偵聽器,則導致偵聽器獲取一個,并使用事件。

介紹

JTextField是一個輕量級組件,它允許編輯單行文本。

JTextField 具有建立字符串的方法,此字符串用作針對被激發的操作事件的命令字符串。java.awt.TextField 把字段文本用作針對 ActionEvent 的命令字符串。如果通過 setActionCommand 方法設置的命令字符串不為 null,則 JTextField 將使用該字符串來保持與 java.awt.TextField 的兼容性,否則將使用字段文本來保持兼容性。

setEchoChargetEchoChar 方法不是直接提供的,以避免可插入的外觀的新實現意外公開密碼字符。為了提供類似密碼的服務,多帶帶的類 JPasswordField 擴展了 JTextField,從而通過可插入外觀獨立地提供此服務。

JTextField 的水平對齊方式可以設置為左對齊、前端對齊、居中對齊、右對齊或尾部對齊。右對齊/尾部對齊在所需的字段文本尺寸小于為它分配的尺寸時使用。這是由 setHorizontalAlignment 和 getHorizontalAlignment 方法確定的。默認情況下為前端對齊。

文本字段如何使用 VK_ENTER 事件取決于文本字段是否具有任何操作偵聽器。如果具有操作偵聽器,則 VK_ENTER 導致偵聽器獲取一個 ActionEvent,并使用 VK_ENTER 事件。這與 AWT 文本字段處理 VK_ENTER 事件的方式是兼容的。如果文本字段沒有操作偵聽器,則從 1.3 版本開始不使用 VK_ENTER 事件。而是處理祖先組件的綁定,這將啟用 JFC/Swing 的默認按鈕特性。

Swing 不是線程安全的

構造函數

JTextField() 構造一個新的 TextField

JTextField(Document doc, String text, int columns) 構造一個新的 JTextField,它使用給定文本存儲模型和給定的列數。

JTextField(int columns) 構造一個具有指定列數的新的空 TextField。

JTextField(String text) 構造一個用指定文本初始化的新 TextField。

JTextField(String text, int columns) 構造一個用指定文本和列初始化的新 TextField。

常用的函數

get/setHorizontalAlignment(int alignment) 設置/得到文本的水平對齊方式。其中水平的對齊方式有:JTextField.LEFT

JTextField.CENTER

JTextField.RIGHT

JTextField.LEADING (the default)

JTextField.TRAILING

setFont(Font font) 設置字體

setScrollOffset(int scrollOffset) 獲取滾動偏移量(以像素為單位)。

setDocument(Document doc) 將編輯器與一個文本文檔關聯,這里的意思就是將此文本框與一個文本文檔關聯,這將會保持內容一致,如果一個改變了,另外一個也會改變。

setInputVerifier(verifier) 設置驗證方式,如果此文本不能通過驗證那么就不能將焦點聚焦到下一個組件上,就會一直聚焦到這個文本框上

setDragEnabled(boolean x) 設置在文本框中是否能夠拖放文本,為true則是能夠,這里的意思就是能夠將文本選中后能不能將文本拖走

addActionListener(ActionListener action) 添加監聽機制,輸入文本按回車即可觸發,和按鈕的監聽機制相同

write(InfileWriter writer) 將文本框中的內容輸入到文件中

addKeyListener(KeyListener event) 添加鍵盤監聽,在文本框中輸入內容時會觸發鍵盤,其中有按下,釋放,鍵入的動作,詳情見官方文檔

一個簡單的實例
import javax.swing.*;
import java.awt.*;

class text extends JFrame {
    private JTextField textField1;
    private JTextField textField2;

    public static void main(String args[]) {
        text my = new text();
        my.setVisible(true);

    }

    public text() {
        //this.setBounds(100,100,300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new GridLayout(2, 1));
        textField1 = new JTextField(10);
        textField2 = new JTextField();
        panel.add(textField1);
        panel.add(textField2);
        this.getContentPane().add(panel, BorderLayout.CENTER);
        this.pack();
        InputVerifier verifier = new InputVerifier() {    //添加驗證方式
            @Override
            public boolean verify(JComponent input) {     //重載函數
                boolean value;
                textField1 = (JTextField) input;    //將input組件強制轉化為JTextField類型的單行文本框
                return textField1.getText().equals("pass");  //判斷是否輸入的時pass,如果不是就會驗證錯誤

            }
        };
        textField1.setInputVerifier(verifier);   //設置驗證方式
        textField1.setHorizontalAlignment(JTextField.CENTER);   //設置水平對齊方式
        Font font = new Font("楷體", Font.BOLD + Font.ITALIC, 20);
        textField1.setFont(font);   //設置字體
        textField1.setDragEnabled(true);  //設置在單行文本框中能夠拖放文本,如果為false則不能夠拖放文本


    }
}
關聯文本文檔
import java.awt.Container;
import java.awt.GridLayout;
/*from   w  ww.jav  a  2s . co m*/
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.text.Document;

public class Main extends JFrame {
  JLabel nameLabel = new JLabel("Name:");
  JLabel mirroredNameLabel = new JLabel("Mirrored:");
  JTextField name = new JTextField(20);
  JTextField mirroredName = new JTextField(20);

  public Main() {
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setLayout(new GridLayout(2, 0));

    Container contentPane = this.getContentPane();
    contentPane.add(nameLabel);
    contentPane.add(name);
    contentPane.add(mirroredNameLabel);
    contentPane.add(mirroredName);

    Document nameModel = name.getDocument();    //得到文本框的文本文檔,將之與第二個文本框關聯
    mirroredName.setDocument(nameModel);           //兩個文本框中的內容相互關聯,這樣只需要在一個里面輸入文本,同時也會在另外一個文本框中顯示
    
    pack();
    setVisible(true);    
  }

  public static void main(String[] args) {
    Main frame = new Main();

  }
}

說明:這里是將兩個文本框相關聯,這樣就能達到一個文本框輸入的同時,另外一個也會同時更新內容

Action Listener(動作監聽機制)

輸入文本后按回車即可觸發

import java.awt.event.ActionEvent;
//from  w  w  w. ja va2s  .c o m
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Main {

  public static void main(String[] a) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextField jTextField1 = new JTextField();

    jTextField1.setText("jTextField1");
    //添加監聽機制
    jTextField1.addActionListener(new   java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.out.println("action");
      }
    });
    frame.add(jTextField1);

    frame.setSize(300, 200);
    frame.setVisible(true);
  }

}
驗證文本內容

使用InputVerifier)驗證

import java.awt.BorderLayout;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Main {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Verifier Sample");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JTextField textField1 = new JTextField();
    JTextField textField2 = new JTextField();
    InputVerifier verifier = new InputVerifier() {     //創建一個驗證
      public boolean verify(JComponent comp) {
        boolean returnValue;
        JTextField textField = (JTextField) comp;      //強制轉換,將控件類型的comp轉換成JTextFiled類型的
        try {
          Integer.parseInt(textField.getText());    //將輸入的內容轉化程int類型,如果輸入的字符串不是十進制的話就會觸發                                                          //NumberFormateException錯誤
          returnValue = true;
        } catch (NumberFormatException e) {   
          returnValue = false;
        }
        return returnValue;        //如果返回false的話,那么指針就會一直聚焦在此文本框中,不能移動到其他的組件上
      }
    };
    textField1.setInputVerifier(verifier);
    frame.add(textField1, BorderLayout.NORTH);
    frame.add(textField2, BorderLayout.CENTER);
    frame.setSize(300, 100);
    frame.setVisible(true);
  }
}

說明:如果返回false的話,那么指針就會一直聚焦在此文本框中,不能移動到其他的組件上

將文本框中的內容保存到文件中
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

class Main extends JFrame {
    private JTextField textField;
    private FileWriter writer;

    public static void main(String args[]) {
        Main my = new Main();
        my.setVisible(true);
    }

    public Main() {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new BorderLayout());
        JButton button = new JButton("運行");
        JLabel label = new JLabel("name");
        textField = new JTextField();
        panel.add(label, BorderLayout.WEST);
        panel.add(textField, BorderLayout.CENTER);
        String filename = "text.txt";
        button.addActionListener(new ActionListener() {    //添加一個按鈕觸發裝置,這里只要點擊一下anniu就會將文本框中的內容輸入到文件中
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    writer = new FileWriter(filename, false);   //創建一個寫入文件的對象,這里的false表示不在文件的末尾添加
                    textField.write(writer);     //將單行文本中輸入的內容寫入到文件中
                    writer.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                    System.out.println("false");
                }
            }
        });
        panel.add(button, BorderLayout.SOUTH);
        this.getContentPane().add(panel, BorderLayout.CENTER);
        this.pack();
    }

}

說明:這里使用的是FileWriter類將內容寫入到文件中,詳情請看我的上一篇文章

復制、粘貼、剪切文本

這里使用的時copy()paste()cut()函數

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

public class Main {
  public static void main(String args[]) {
    final JTextField textField = new JTextField(15);
    JButton buttonCut = new JButton("Cut");
    JButton buttonPaste = new JButton("Paste");
    JButton buttonCopy = new JButton("Copy");

    JFrame jfrm = new JFrame("Cut, Copy, and Paste");
    jfrm.setLayout(new FlowLayout());
    jfrm.setSize(230, 150);
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    buttonCut.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent le) {
        textField.cut();
      }
    });

    buttonPaste.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent le) {
        textField.paste();
      }
    });

    buttonCopy.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent le) {
        textField.copy();
      }
    });

    textField.addCaretListener(new CaretListener() {
      public void caretUpdate(CaretEvent ce) {
        System.out.println("All text: " + textField.getText());
        if (textField.getSelectedText() != null)
          System.out.println("Selected text: " + textField.getSelectedText());
        else
          System.out.println("Selected text: ");
      }
    });

    jfrm.add(textField);
    jfrm.add(buttonCut);
    jfrm.add(buttonPaste);
    jfrm.add(buttonCopy);
    jfrm.setVisible(true);
  }
}

說明:這里使用的時用三個按鈕監聽操作,只需要按住對應的按鈕就會觸發機制

添加鍵盤監聽機制
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Main extends JFrame {
  public Main() throws HeadlessException {
    setSize(200, 200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new FlowLayout(FlowLayout.LEFT));

    JLabel usernameLabel = new JLabel("Username: ");
    JTextField usernameTextField = new JTextField();
    usernameTextField.setPreferredSize(new Dimension(100, 20));
    add(usernameLabel);
    add(usernameTextField);

    usernameTextField.addKeyListener(new KeyAdapter() {   //創建機制
      public void keyReleased(KeyEvent e) {        //重載函數,釋放按鍵觸發
        JTextField textField = (JTextField) e.getSource();  //得到最初發生event的組件對象,既是文本框對象
        String text = textField.getText();
        textField.setText(text.toUpperCase());      //將所有的小寫字母轉換成大寫字母
      }
       public void keyTyped(KeyEvent e) {           //鍵入時觸發
      }

      public void keyPressed(KeyEvent e) {       //釋放按鍵時觸發的函數
      }   
    });
  }

  public static void main(String[] args) {
    new Main().setVisible(true);
  }
}
參考文檔

官方網站)

英文文檔

本人博客

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66968.html

相關文章

  • 初學 Swing 組件

    摘要:包括了圖形用戶界面器件如文本框,按鈕,分隔窗格和表。按照指定布局限制添加組件。移除指定位置的組件。通常文本框用于接收用戶信息或其他文本信息的輸入。因此,組件也稱為密碼文本框。創建一個具有出事文本信息以及制定列數的文本框。 Swing 是一個為Java設計的GUI工具包。 Swing是JAVA基礎類的一部分。 Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。 S...

    codeGoogle 評論0 收藏0
  • 界面開發的步驟

    摘要:事件對象攜帶了動作發生時的相關信息,比如通過事件對象獲取按鈕的字符串,通過字符串判斷后執行不同的代碼。使用監聽器的步驟自己創建一個類使用這個類創建一個對象,用按鈕對象的添加監聽器方法添加這個對象。 ...

    MangoGoing 評論0 收藏0
  • Java 實現簡單計算器

    摘要:對于理論算法不再這累贅了。在查閱資料的時候發現算法不管用棧還是正則等等,似乎只處理操作符是的數,這是很不可取的。所以需要先將中綴表達式轉化成后綴并標記多位數的操作符,然后在處理后綴表達式。 最后一次更新于2019/07/08 效果演示圖 showImg(https://segmentfault.com/img/bVbuIwj?w=388&h=290); 功能與流程 要制作一個簡易計算器...

    thekingisalwaysluc 評論0 收藏0
  • Java窗口(JFrame)從零開始(8)——文本+文本域+密碼

    摘要:文本域構造方法摘要構造新的。構造顯示指定文本的新的。密碼框構造方法摘要構造一個新,使其具有默認文檔為的開始文本字符串和為的列寬度。登錄界面賬號密碼清除登錄觸發事件設置關閉方式,可以選擇多種關閉玄子選項 應該最后一章了,前面有大神提到很少有人用Java做UI,這里就算是給像我這樣的初學者去了解窗體是怎么一回事的文章吧 文本框(JTextField) 構造方法摘要 JTextField(...

    X1nFLY 評論0 收藏0

發表評論

0條評論

DevTalking

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<