簡體   English   中英

如何接收從文本字段到文本區域等的輸入?

[英]How to receive input from textfield to textarea and a lot more…?

在此處輸入圖片說明

我該怎么做? 1)如果用戶打開該程序,則不必單擊文本字段即可獲得焦點,相反,如果切換到該程序,它將立即為您提供編寫焦點,而無需單擊以獲取焦點。

2)如果用戶在文本字段中輸入ID編號或項目名稱,則textarea會響應文本字段並向用戶顯示該ID或名稱(例如)。

3)如何減小文本區域的大小,以免面板在角落出現? 我想使文本區域像盒子一樣小一點,在盒子外面,只是灰色。

為了完全幫助我,我很樂意給出代碼。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;

public abstract class Itemlist extends JFrame implements ActionListener, FocusListener {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    public static void main(String args[]) {
        // create JFrame
        JFrame frame = new JFrame("small project");
        frame.setDefaultCloseOperation(2);
        frame.setPreferredSize(new Dimension(400, 600));
        frame.setLayout(new BorderLayout());
        frame.setResizable(false);


        JPanel panel = new JPanel(new FlowLayout(SwingConstants.LEADING, 10, 10));
        frame.add(panel);
        panel.setPreferredSize(new Dimension(100, 50));

        JTextField tf = new JTextField(25);
        tf.setPreferredSize(new Dimension(100, 35));
        Font f = new Font("Times New Roman", Font.BOLD, 18);
        tf.setFont(f);
        panel.add(tf);
        frame.add(tf, BorderLayout.PAGE_END);

        tf.addFocusListener(new FocusListener() {

            @Override
            public void focusGained(FocusEvent e) {
                tf.getText();

            }

            @Override
            public void focusLost(FocusEvent e) {
                tf.setText("");

            }

        });

        JTextArea ta = new JTextArea();
        frame.add(ta);
        Font font = new Font("Times New Roman", Font.PLAIN, 16);
        ta.setEditable(false);
        ta.setFont(font);

        JScrollPane scrollPane = new JScrollPane(ta);
        scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        frame.add(scrollPane);

        BufferedReader br;
        String contents;

        try {
            br = new BufferedReader(new FileReader("C:/ItemList.txt"));
            contents = br.readLine();

            while ((contents = br.readLine()) != null) {


                ta.read(br, null);
            }
            br.close();
        } catch (IOException e) {

        }


        frame.pack();
        // frame.setLocationRelativeTo(null);
        frame.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent arg0) {

    }
}

*感謝所有幫助。 被卡在上面了。

  1. 我懷疑您想考慮使用WindowListener並監視windowActivated事件,這時您可以在JTextField上調用requestFocusInWindow以將焦點自動轉移給它。 焦點管理有點不明智,因為它在不同平台上的工作方式略有不同
  2. 我不確定您的意思是什么,但是我將考慮對ActionListener支持。 這將要求用戶點擊“操作”鍵(通常是Enter )來觸發它。 如果您需要實時反饋,則可以使用DocumentListener
  3. 使用JTextArea的構造函數來指定首選的行數和列數。 這將定義組件的首選可滾動大小,這也會影響JScrollPane的大小。
  4. 將來,嘗試將您的問題限制為單個重點問題,它們更容易回答,而且通常會產生更多細節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM