Java Swing 1 -- JTextField

来源:互联网 发布:汽车租赁管理系统java 编辑:程序博客网 时间:2024/04/19 14:51


API: java.awt.GridLayout
  GridLayout(int rows, int cols)
  GridLayout(int rows, int cols, int hgap, int vgap)

gap is 水平间距

---- 文本输入
JTextField, JTextArea

        void setText(String t)
        String getText()
        void setEditable(boolean b)
Ex:
JPanel panel = new JPanel();
JTextField textField = new JTextField("Default input", 20);//default value and width
panel.add(textField);

note: width should be 1/2 more that you want to input. it is better.
这个不是输入的上限, 但是如果多了会滚动, 这个是要避免的, 所以
setColumns
        textField.setColumns(10);
        panel.revalidate();
? 如何重新计算呢, 估计不是实时的

如果只是加个文本,由用户添加。
        JTextField textField = new JTextField(20);
change the value using
        textField.setText("Helllo!");
如果想把前后的空格去掉, 用trim
        String text = textField.getText().trim();


API:         JTextField(int cols);  // 构造一个指定列的空JTextField
        JTextField(String text, int cols);
        void setColumns(int cols);

重新计算组件的位置和大小
        JComponent
        void revalidate();

-----标签

        JLabel label = new JLabel("Minutes", JLabel.RIGHT); // 靠右对齐, 标签名字。 default 是左对齐
        void setText(String text)  // 设定标签的文本

字符串转化成整数:
        int hours = Integer.parseInt(hourField.getText().trim());

Example: TextTest
              DocumentListener listener = new ClockFieldListener();
              panel.add(hourField);
              hourField.getDocument().addDocumentListener(listener);
三种动作:
   private class ClockFieldListener implements DocumentListener
   {
      public void insertUpdate(DocumentEvent event) { setClock(); }
      public void removeUpdate(DocumentEvent event) { setClock(); }
      public void changedUpdate(DocumentEvent event) {}
   }

              add(panel, BorderLayout.SOUTH);  //是说把panel加在frame的最下面
              pack();// 不加会如何; 不加就会default0.0; 加了会重新算好。 Good。 这里是构造函数里面, 如果不是则为
              JPanel.pack();

              try
              {
                 int hours = Integer.parseInt(hourField.getText().trim());
                 int minutes = Integer.parseInt(minuteField.getText().trim());
                 clock.setTime(hours, minutes);
              }
              catch (NumberFormatException e) {}

       

 

API:         Document getDocument();
                可以加DocumentListener。 如上
        int getLength();  // 返回当前文档中的字符个数。

note: 变量声明都放在最后面。

ASK: 为什么getTxt(). getDocument()
        区别是 Document 是为了哪几个操作而已, 而getText() 是为了返回文本。

---------密码域
区别是 显示用回显字符 echo character
API:         JPasswordField(String text, int columns);
             void setEchoChar(char echo);  设置用什么样的回显字符,0 为默认   *
             char[] getPassword(); // 没有用过

----- 格式化的输入域,  就是说输入本身会加check  --重要
        键盘监听, 问题是说如果copypaste 怎么办?
整型: JFormattedTextField intField = new JFormattedTextField(NumberFormat,getIntegerInstance);
        intField.setColumn(6);
设置默认值:  intField.setValue(new Integer(100));  // 注意, 100 需要转成对象。

----- 过滤器的使用。  Good point
----- 检验器的使用,

Ex:         class FormattedTextFieldVerifier extends InputVerifier
        {
                public boolean verify(JComponent component)
                {
                        JFormattedTextField field = (JFormattedTextField)component;
                        return field.isEditValid(); 
                }
        }

..............  如何check field 的, 用例子study一下

in sum
今天收获在于学习了文本域, 标签, 输入的check,以及如果整型check,ip的check 如果需要做的时候需要再参考。

每天一个topic, 写一个程序 计划。 

Good job keep going。

 

 

 

 

 

 

 

 

 

 

 


 

原创粉丝点击