2017-09-23 86 views
0

enter image description here如何接收从textfield到textarea的输入以及更多...?

我该如何做到这一点? 1)如果用户打开该程序,您不必点击文本框来获得焦点,相反,如果切换到该程序,它会立刻给你一个焦点,而不是点击焦点。

2)如果用户向文本字段写入ID号或项目名称,textarea将响应文本字段并显示用户的ID或名称,例如弹出。

3)如何使textarea更小,甚至面板显示在角落?我想让一个textarea像盒子一样小一点,它只是一个灰色。

为了充分帮助我,我会很乐意给出代码。

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) { 

    } 
} 

*所有帮助表示赞赏。一直卡在它上面。

回答

0
  1. 我怀疑你要考虑使用WindowListener和监测的windowActivated事件,此时你可以调用requestFocusInWindowJTextField将焦点自动转移到它。焦点管理有点像黑色艺术,因为它在不同平台上的工作方式略有不同
  2. 我不确定你的意思,但我会看看ActionListener支持。这将要求用户点击“动作”键(通常为输入)来触发它。如果您想要实时反馈,请使用DocumentListener
  3. 使用JTextAreas constructor指定首选行数和列数。这将定义组件的首选可滚动大小,这将影响JScrollPane的大小以及
  4. 将来,请尝试并限制您对单个聚焦问题的质疑,它们更易于回答并且通常会生成更多详细信息。
相关问题