如何设置JTextField的大小

如何设置JTextField的大小,第1张

设置JTextField的大小 , 一般跟布局管理器有关系.

布局是流布局时 ,那么可以在创建对象时,设置JTextField的大小(长度)

JTextField jtf= new JTextField(8)//长度为8的文本输入框

布局是空布局, 那么可以设置JTextField的size来设置大小

JTextField jtf= new JTextField()

//jtf.setBounds(30, 50, 220, 20)//30 50表示位置坐标, 宽220 高20

jtf.setLocation(30, 50)//设置位置

jtf.setSize(220, 20)//设置大小

//引用方法:

//JtextField jtf = new JTextFiel()

//jtf.setDocument(new ClsNumberDocument(5))

 

 

import javax.swing.text.PlainDocument

import javax.swing.text.AttributeSet

import javax.swing.text.BadLocationException

import java.awt.Toolkit

/** 

 * <p>Title: 限制输入为数字</p> 

 * @author Wancar 

 * @version 0.5 

 * 日期 2002-03-21 

 * @copyright (c) 2000-2001. 

 * 

 * @description 

 * 限制输入为数字的文本类 

 * 

 * 并行策略描述(可选) 

 * 修改历史: 

 * 无 

 * 修改描述:无 

 * 

 * 内部类清单: 

 * 无 

 */

/**

 * 限制输入为数字的文本类

 */

public class ClsNumberDocument extends PlainDocument {

 /**

  * 

  */

 private static final long serialVersionUID = 1L

 private boolean isCanBeNegative = false // 可以为负数

 private final static int STRING_MAX_LEN = 255 // 最大长度

 private int len = STRING_MAX_LEN // 当前可接受的最大长度

 /**

  * 构造方法

  */

 public ClsNumberDocument() {

 }

 /**

  * 构造方法

  * 

  * @param len

  *            限制的长度

  */

 public ClsNumberDocument(int len) {

  this.len = len

 }

 /**

  * 可以为付数并限制长度

  * 

  * @param isCanBeNegative

  *            是否可以为负数

  * @param len

  *            限制的最大长度

  */

 public ClsNumberDocument(boolean isCanBeNegative, int len) {

  this.isCanBeNegative = isCanBeNegative

  this.len = len

 }

 // 变量falg的作用是,通过传入的数是正数还是负数来决定数字的位数

 // 以便做到指定数字位数时,只要考虑数字的位数,而无需考虑正负号

 // 所占用的位数。

 private boolean falg = false

 /**

  * 实现的插入方法

  * 

  * @param offset

  *            偏移

  * @param s

  *            要接受的字符串,在拷贝粘贴时会有多个字符

  * @param attributeSet

  * @throws BadLocationException

  */

 public void insertString(int offset, String s, AttributeSet attributeSet)

   throws

   BadLocationException {

  try {

   if (isAllNumber(s)) {

    final int length = this.getLength()

    if (s.charAt(0) == '-') {

     if (this.isCanBeNegative) {

      if (length == 0) {

       this.len = falg ? len : len + 1

       falg = true

       super.insertString(offset, s, attributeSet)

      }

     }

    } else {

     if (length == 0) {

      this.len = falg ? len - 1 : len

      falg = false

     }

     if (length < len) {

      String src = this.getText(0, length)

      Double.parseDouble(src.substring(0, offset) + s

        + src.substring

        (offset, src.length()))

      super.insertString(offset, s, attributeSet)

     }

    }

   }

  } catch (Exception ex) {

   Toolkit.getDefaultToolkit().beep()

  }

 }

 /**

  * 判断字符串是否全是数字

  * 

  * @param s

  * @return

  */

 private boolean isAllNumber(String s) {

  boolean ret = true

  if (s.length() > 0) {

   char[] buf = s.toCharArray()

   for (int i = 0 i < buf.length i++) {

    char c = buf[i]

    if (c < '0' || c > '9') {

     if (c != '.' && c != '-') {

      ret = false

      break

     }

    }

   }

  } else {

   ret = false

  }

  return ret

 }

}

可以靠焦点得失之后,进行判定,如果为空字符串,就显示默认值

代码:

import java.awt.event.*

import javax.swing.*

public class DefaultValueTextField extends JTextField {

public DefaultValueTextField() {

this.addFocusListener(new FocusAdapter() {

@Override

public void focusGained(FocusEvent e) {

clearDefault()

}

@Override

public void focusLost(FocusEvent e) {

showDefault()

}

})

}

@Override

public String getText() {

String s = super.getText()

if (s.equals(DEFAULT)) {

return ""

} else {

return s

}

}

@Override

public void setText(String t) {

if (t.equals("")) {

super.setText(DEFAULT)

} else {

super.setText(t)

}

}

public static void main(String[] args) {

JFrame frame = new JFrame()

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

final JTextField f = new DefaultValueTextField()

f.setColumns(20)

JPanel panel = new JPanel()

panel.add(f)

JButton button = new JButton("reset")

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

f.setText("")

}

})

panel.add(button)

frame.add(panel)

frame.pack()

frame.setVisible(true)

}

private void clearDefault() {

if (super.getText().equals(DEFAULT)) {

this.setText("")

}

}

private void showDefault() {

if (super.getText().equals("")) {

this.setText(DEFAULT)

}

}

private static final String DEFAULT = "INPUT HERE!"

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11247869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存