The following piece of code will create a field that holds only upper case characters. It will work even if text is pasted into from the clipboard.
UpperCaseField.java
import javax.swing.*;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
public class UpperCaseField extends JTextField {
public UpperCaseField(int cols) {
super(cols);
}
protected Document createDefaultModel() {
return new UpperCaseDocument();
}
static class UpperCaseDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++) {
upper[i] = Character.toUpperCase(upper[i]);
}
super.insertString(offs, new String(upper), a);
}
}
}
main.java
import javax.swing.*;
import java.awt.*;
class main extends JFrame
{
UpperCaseField ucf;
Container c;
main()
{
c=getContentPane();
c.setLayout(null);
setTitle("Text");
setBounds(120,100,500,350);
setVisible(true);
setResizable(false);
JLabel lbl=new JLabel("Upper Case:");
lbl.setBounds(10,10,100,30);
c.add(lbl);
ucf=new UpperCaseField(30);
ucf.setBounds(120,10,350,30);
c.add(ucf);
setContentPane(c);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] arg)
{
new main();
}
}

No comments:
Post a Comment