Java 设置文本字段的宽度
我想设置TextField可以接受的最大条目数,我使用了:Java 设置文本字段的宽度,java,swing,jtextfield,Java,Swing,Jtextfield,我想设置TextField可以接受的最大条目数,我使用了: setMaximumSize setPreferredWidth SetColumns 但他没能做到。我怎样才能做到呢 这是我的密码: import java.awt.*; import javax.swing.*; public class ButtonDemo extends JFrame { public static void main(String args[]){ JFrame jfrm = ne
setMaximumSize
setPreferredWidth
SetColumns
但他没能做到。我怎样才能做到呢
这是我的密码:
import java.awt.*;
import javax.swing.*;
public class ButtonDemo extends JFrame {
public static void main(String args[]){
JFrame jfrm = new JFrame("Sample program");
Container Content = jfrm.getContentPane();
content.setBackground(Color.red);
jfrm.setLayout(null);
jfrm.setBounds(250, 150, 400, 400);
JTextField text = new JTextField();
Font font1 = new Font("Courier",Font.BOLD,12);
text.setFont(font1);
text.setBounds(50, 15, 100, 30);
JButton button1 = new JButton("PROGRAM");
button1.setFont(font1);
button1.setBounds(250, 15, 100, 40);
button1.setBackground (Color.white);
JButton button3 = new JButton("EXIT");
button3.setBounds(250, 115, 100, 40);
button3.setBackground (Color.cyan);
button1.setForeground (Color.red);
JButton button2 = new JButton("USER");
button2.setBounds(250, 65, 100, 40);
button2.setBackground (Color.WHITE);
jfrm.add(button1);
jfrm.add(button2);
jfrm.add(button3);
jfrm.add(text);
jfrm.setVisible(true);
jfrm.setResizable(false);
}
}
文本字段本身并不限制文本的长度。要获得所需的内容,您必须通过调用
setDocument()
或将其传递给构造函数,为textfield提供不同的文档
您的文档将是javax.swing.text.document
的实例,例如javax.swing.text.PlainDocument
的子类。然后重写public void insertString(int offs、String str、AttributeSet a)抛出BadLocationException
方法
Swing似乎有一个FixedLengthDocument
,但是它是HTMLDocument
的私有静态内部类。但是,为了让您开始学习,下面是该类源代码的相关部分:
public void insertString(int offset, String str, AttributeSet a) throws BadLocationException {
if (str != null && str.length() + getLength() <= maxLength) {
super.insertString(offset, str, a);
}
}
public void insertString(int offset、String str、AttributeSet a)引发BadLocationException{
如果(str!=null&&str.length()+getLength()文本字段本身不限制文本的长度。要获得所需的内容,必须向文本字段提供不同的文档,方法是调用setDocument()
或将其传递给构造函数
您的文档将是javax.swing.text.document
的一个实例,例如javax.swing.text.PlainDocument
的一个子类。然后重写public void insertString(int offs,String str,AttributeSet a)抛出BadLocationException
方法
Swing似乎有一个FixedLengthDocument
,但是它是HTMLDocument
的一个私有静态内部类。不过,为了让您开始学习,下面是该类源代码的相关部分:
public void insertString(int offset, String str, AttributeSet a) throws BadLocationException {
if (str != null && str.length() + getLength() <= maxLength) {
super.insertString(offset, str, a);
}
}
public void insertString(int offset、String str、AttributeSet a)引发BadLocationException{
如果(str!=null&&str.length()+getLength()除了按照Thomas的建议使用不同的文档
之外,您还可以使用.可能更简单。除了按照Thomas的建议使用不同的文档
之外,您还可以使用.可能更简单。使用文档过滤器
,如本教程所述
下面是我最近用来限制最大输入大小和框中字符类别的示例:
class SizeAndRegexFilter extends DocumentFilter {
private int maxSize;
private String regex;
SizeAndRegexFilter (int maxSize,String regex) {
this.maxSize=maxSize;
this.regex=regex;
}
public void insertString(FilterBypass fb, int offs,String str, AttributeSet a) throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()) <= maxSize && str.matches(regex))
super.insertString(fb, offs, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
public void replace(FilterBypass fb, int offs,int length, String str, AttributeSet a) throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()
- length) <= maxSize && str.matches(regex))
super.replace(fb, offs, length, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
}
class SizeAndRegexFilter扩展了DocumentFilter{
私有int-maxSize;
私有字符串正则表达式;
SizeAndRegexFilter(int-maxSize,字符串正则表达式){
这个.maxSize=maxSize;
this.regex=regex;
}
public void insertString(FilterBypass fb、int offs、String str、AttributeSet a)引发BadLocationException{
如本教程所述,如果((fb.getDocument().getLength()+str.length())使用DocumentFilter
下面是我最近用来限制最大输入大小和框中字符类别的示例:
class SizeAndRegexFilter extends DocumentFilter {
private int maxSize;
private String regex;
SizeAndRegexFilter (int maxSize,String regex) {
this.maxSize=maxSize;
this.regex=regex;
}
public void insertString(FilterBypass fb, int offs,String str, AttributeSet a) throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()) <= maxSize && str.matches(regex))
super.insertString(fb, offs, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
public void replace(FilterBypass fb, int offs,int length, String str, AttributeSet a) throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()
- length) <= maxSize && str.matches(regex))
super.replace(fb, offs, length, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
}
class SizeAndRegexFilter扩展了DocumentFilter{
私有int-maxSize;
私有字符串正则表达式;
SizeAndRegexFilter(int-maxSize,字符串正则表达式){
这个.maxSize=maxSize;
this.regex=regex;
}
public void insertString(FilterBypass fb、int offs、String str、AttributeSet a)引发BadLocationException{
如果((fb.getDocument().getLength()+str.length())问题在于布局管理器仍在负责布局,因此,请设置MaximumSize
setPreferredWidth不起作用
要在开始时解决此问题,需要将布局管理器设置为null
jfrm.setLayout(null);
尽管如此,您需要使用组件的绝对定位
也看到
问题在于您的布局管理器仍在负责布局,因此,请设置MaximumSize
setPreferredWidth不起作用
要在开始时解决此问题,需要将布局管理器设置为null
jfrm.setLayout(null);
尽管如此,您需要使用组件的绝对定位
也看到
我对你的程序做了一些修改,让你的东西正常工作,请看一下:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class ButtonDemo extends JFrame {
public static void main(String args[]){
JFrame jfrm = new JFrame("Sample program");
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setLocationByPlatform(true);
Container content = jfrm.getContentPane();
content.setBackground(Color.red);
jfrm.setLayout(null);
jfrm.setBounds(250, 150, 400, 400);
JTextField text = new JTextField();
Font font1 = new Font("Courier",Font.BOLD,12);
text.setFont(font1);
text.setBounds(50, 15, 100, 30);
AbstractDocument abdoc;
Document doc = text.getDocument();
if (doc instanceof AbstractDocument)
{
abdoc = (AbstractDocument) doc;
abdoc.setDocumentFilter(new DocumentSizeFilter(4));
}
JButton button1 = new JButton("PROGRAM");
button1.setFont(font1);
button1.setBounds(250, 15, 100, 40);
button1.setBackground (Color.white);
JButton button3 = new JButton("EXIT");
button3.setBounds(250, 115, 100, 40);
button3.setBackground (Color.cyan);
button1.setForeground (Color.red);
JButton button2 = new JButton("USER");
button2.setBounds(250, 65, 100, 40);
button2.setBackground (Color.WHITE);
jfrm.add(button1);
jfrm.add(button2);
jfrm.add(button3);
jfrm.add(text);
jfrm.setVisible(true);
jfrm.setResizable(false);
}
}
class DocumentSizeFilter extends DocumentFilter {
private int max_Characters;
private boolean DEBUG;
public DocumentSizeFilter(int max_Chars) {
max_Characters = max_Chars;
DEBUG = false;
}
public void insertString(FilterBypass fb
, int offset
, String str
, AttributeSet a)
throws BadLocationException {
if (DEBUG) {
System.out.println("In DocumentSizeFilter's insertString method");
}
if ((fb.getDocument().getLength() + str.length()) <= max_Characters)
super.insertString(fb, offset, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
public void replace(FilterBypass fb
, int offset, int length
, String str, AttributeSet a)
throws BadLocationException {
if (DEBUG) {
System.out.println("In DocumentSizeFilter's replace method");
}
if ((fb.getDocument().getLength() + str.length()
- length) <= max_Characters)
super.replace(fb, offset, length, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
}
import java.awt.*;
导入javax.swing.*;
导入javax.swing.text.*;
公共类ButtonDemo扩展JFrame{
公共静态void main(字符串参数[]){
JFrame jfrm=新JFrame(“示例程序”);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setLocationByPlatform(真实);
容器内容=jfrm.getContentPane();
内容。挫折背景(颜色:红色);
jfrm.setLayout(空);
jfrm.立根(250150400400);
JTextField text=新的JTextField();
Font font1=新字体(“信使”,字体粗体,12);
text.setFont(font1);
文本.立根(50,15,100,30);
abdoc文件摘要;
Document doc=text.getDocument();
if(抽象文档的文档实例)
{
abdoc=(抽象文档)文档;
abdoc.setDocumentFilter(新DocumentSizeFilter(4));
}
JButton button1=新JButton(“程序”);
按钮1.设置字体(font1);
按钮1.立根(250、15、100、40);
按钮1.背景(颜色:白色);
JButton button3=新JButton(“退出”);
按钮3.立根(250、115、100、40);
按钮3.背景(颜色为青色);
按钮1.设置前景(颜色:红色);
JButton button2=新JButton(“用户”);
按钮2.立根(250、65、100、40);
按钮2.背景(颜色:白色);
jfrm.add(按钮1);
jfrm.add(按钮2);
jfrm.add(按钮3);
jfrm.add(文本);
jfrm.setVisible(真);
jfrm.setresizeable(false);
}
}
类DocumentSizeFilter扩展了DocumentFilter{
私有int max_字符;
私有布尔调试;
公共文档大小筛选器(int max_Chars){
最大字符数=最大字符数;
调试=错误;
}
public void insertString(FilterBypass)
,整数偏移量
,String str
,属性集a)
抛出BadLocationException{