Swing JTextField類

2019-10-16 22:10:34

JTextField類是一個允許編輯單行文字的元件。

類宣告

以下是javax.swing.JTextField類的宣告 -

public class JTextField
   extends JTextComponent
      implements SwingConstants

欄位

以下是javax.swing.JList類的欄位 -

  • static String notifyAction - 要傳送已接受欄位內容的通知的操作的名稱。

類建構函式

編號 建構函式 描述
1 JTextField() 構造一個新的TextField。
2 JTextField(Document doc, String text, int columns) 構造一個新的JTextField,它使用給定的文字儲存模型和給定的列數。
3 JTextField(int columns) 構造具有指定列數的新空TextField。
4 JTextField(String text) 構造使用指定文字初始化的新TextField。
5 JTextField(String text, int columns) 構造一個使用指定文字和列初始化的新TextField。

類建構函式

編號 類方法 描述
1 protected void actionPropertyChanged(Action action, String propertyName) 更新文字欄位的狀態以響應關聯操作中的屬性更改。
2 void addActionListener(ActionListener l) 新增指定的操作偵聽器以從此文字欄位接收操作事件。
3 protected void configurePropertiesFromAction(Action a) 設定此文字欄位上的屬性以匹配指定Action中的屬性。
4 protected PropertyChangeListener createActionPropertyChangeListener(Action a) 建立並返回一個PropertyChangeListener,它負責偵聽指定Action的更改並更新相應的屬性。
5 protected Document createDefaultModel() 如果沒有明確給出,則建立要在構造中使用的模型的預設實現。
6 protected void fireActionPerformed() 通知所有已註冊對此事件型別的通知感興趣的監聽器。
7 AccessibleContext getAccessibleContext() 獲取與此JTextField關聯的AccessibleContext
8 Action getAction() 返回此ActionEvent源的當前設定Action,如果未設定Action,則返回null
9 ActionListener[] getActionListeners() 返回使用addActionListener()新增到此JTextField的所有ActionListener的陣列。
10 Action[] getActions() 獲取編輯器的命令列表。
11 int getColumns() 返回此TextField中的列數。
12 protected int getColumnWidth() 返回列寬。
13 int getHorizontalAlignment() 返回文字的水平對齊方式。
14 BoundedRangeModel getHorizontalVisibility() 獲取文字欄位的可見性。
15 Dimension getPreferredSize() 返回此TextField所需的首選大小。
16 int getScrollOffset() 獲取捲動偏移量(以畫素為單位)。
17 String getUIClassID() 獲取UI的類ID。
18 boolean isValidateRoot() 通過驗證textfield來處理來自textfield本身內部的重新驗證呼叫,除非textfield包含在JViewport中,否則返回false
19 protected String paramString() 返回此JTextField的字串表示形式。
20 void postActionEvent() 處理在此文字欄位上發生的操作事件,方法是將它們分派給任何已註冊的ActionListener物件。
21 void removeActionListener(ActionListener l) 刪除指定的操作偵聽器,以便它不再從此文字欄位接收操作事件。
22 void scrollRectToVisible(Rectangle r) 向左或向右捲動欄位。
23 void setAction(Action a) 設定ActionEvent源的Action
24 void setActionCommand(String command) 設定用於操作事件的命令字串。
25 void setColumns(int columns) 設定此TextField中的列數,使布局無效。
26 void setDocument(Document doc) 將編輯器與文字文件關聯。
27 void setFont(Font f) 設定當前字型。
28 void setHorizontalAlignment(int alignment) 設定文字的水平對齊方式。
29 void setScrollOffset(int scrollOffset) 設定捲動偏移(以畫素為單位)。

方法繼承

該類繼承以下類中的方法 -

  • javax.swing.text.JTextComponent
  • javax.swing.JComponent
  • java.awt.Container
  • java.awt.Component
  • java.lang.Object

JTextField範例

使用編輯器建立以下Java程式 -

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

public class JTextFieldExample {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;

   public JTextFieldExample(){
      prepareGUI();
   }
   public static void main(String[] args){
       JTextFieldExample  swingControlDemo = new JTextFieldExample();      
      swingControlDemo.showTextFieldDemo();
   }
   private void prepareGUI(){
      mainFrame = new JFrame("Java Swing JTextField範例");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));

      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new JLabel("", JLabel.CENTER);        
      statusLabel = new JLabel("",JLabel.CENTER);    
      statusLabel.setSize(350,100);

      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }
   private void showTextFieldDemo(){
      headerLabel.setText("Control in action: JTextField"); 

      JLabel  namelabel= new JLabel("使用者名: ", JLabel.RIGHT);
      JLabel  passwordLabel = new JLabel("密碼: ", JLabel.CENTER);
      final JTextField userText = new JTextField(6);
      final JPasswordField passwordText = new JPasswordField(6);      

      JButton loginButton = new JButton("登入");
      loginButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {     
            String data = "使用者名: " + userText.getText();
            data += ", 密碼: " + new String(passwordText.getPassword()); 
            statusLabel.setText(data);        
         }
      }); 
      controlPanel.add(namelabel);
      controlPanel.add(userText);
      controlPanel.add(passwordLabel);       
      controlPanel.add(passwordText);
      controlPanel.add(loginButton);
      mainFrame.setVisible(true);  
   }
}

執行上面範例程式碼,得到以下結果: