如何向JTextField添加自定义文本约束?
例如,我希望用户以这样的格式提供输入:
12-100
78-023
我在JFrame上需要这样一个数字文本字段
我尝试使用JFormattedTextField:
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
NumberFormatter numFormater = new NumberFormatter(nf);
field1 = new javax.swing.JFormattedTextField(numFormater);
Run Code Online (Sandbox Code Playgroud)
但是,格式限制仅在焦点离开组件时适用,这是一个问题.我希望用户能够在字段中仅键入数字和分隔符,并在字段中输入每个3-d数字后立即放置空格分隔符.
我只能通过指定字段的属性在C#中执行此操作.什么是在Swing中做到这一点的干净方法?谢谢.
我知道下面的代码应该格式化,FormattedTextField但它似乎没有对表单做任何事情(如下图所示).当表单加载时我很想要:文本字段看起来像这样
00/00/2014 - 00:00 am
用户能够在哪里
输入符号分隔符周围的类似日期的信息(/或:)
但是用户无法删除这些符号分隔符
码:
package datefield;
import javax.swing.JFormattedTextField;
import javax.swing.text.DateFormatter;
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
JFormattedTextField dateField = new JFormattedTextField(new DateFormatter(/*...*/));
}
Run Code Online (Sandbox Code Playgroud)
截图:
我无法显示图片,因为我需要10个声望,但链接到图片在http://i.stack.imgur.com/sO3em.png下面
我有多个地方可以在一个坐标系和另一个坐标系之间进行转换.在每种情况下都有一个余弦/正弦计算,我们称之为x,y和x',y'.这些都是JFormattedTextFields.
如果用户在4中的任何一个中输入值,则调用ActionListener.让我们调用字段fieldx,fieldy,fieldx1和fieldy1.如果用户在fieldx或fieldy中输入任何内容,我将使用fieldx和fieldy中的当前值更新fieldx1和fieldy1的键盘和焦点侦听器(所有四个字段都是相同的).如果对侦听器的调用来自fieldx1或fieldy1,则会计算fieldx和fieldy.
然后我决定在配置文件中保存选择的字段(包括一堆复选框开/关和一些微调器的值)(开发后的新要求).我认为通过设置值和状态一切都会好的但是某些事情没有发生(幕后).我决定这部分是由于各种检查和输入等触发方法没有发生,因为当它们由一段代码设置时,字段没有触发键盘和焦点监听器.
在线阅读之后,我将所有的KeyboardAdapter更改为ActionListener,在我设置了值之后,我在上面提到的字段上调用了postActionEvent(),现在所有的后台内容都发生了(尽管顺序是一个问题,我将保存有关的额外信息)声明要正确更新.我做了这个改变是因为我认为解雇这么多假键盘事件会更加困难吗?
可能有更聪明/聪明的方法来做到这一点,但现在我试图不要触及太多的代码.
有没有人建议保存面板状态并刷新它(当前对象,面板)?
如果我继续这样做,有人可以建议一种方法来最小化ActionListener触发的时间吗?它似乎经常发射它是荒谬的!
我应该改变这里建议的事情吗?
您的类应该实现ActionListener还是使用匿名ActionListener类的对象
这似乎涉及更多的编码,但更精确的触发时...
如果这种问题/讨论在这里不合适,请告诉我:).只需输入此页面,我就会想到更多要阅读和尝试的内容.
如何编码a JFormattedTextField接受没有小数的货币格式?
我到处试图寻找答案.在这里,Oracle,Google和Code Ranch是具体的.
我的问题:如何编码格式化文本字段以接受不带小数的货币格式.文本字段可以接受从$ 5到$ 10,000,000的任何值.我希望它在需要时包含",".此字段不会用于数学表达式,因此无需从字符串转换它.
这是我尝试使用的代码.此格式不允许我在格式化文本字段中输入任何数字.
buildInfo方法
//The buildInfo method will build the info panel
private void buildInfo()
{
info = new JPanel();
GridLayout gl = new GridLayout (3,1);
info.setLayout (gl);
//Create panel, label, and text area for pledgers name
p1 = new JPanel();
p1.setLayout(new FlowLayout(FlowLayout.LEFT));
label1 = new JLabel ("Pledger's Name: ");
p1.add (label1);
text1 = new JTextField (20);
p1.add (text1);
//Create panel, label, and text area for pledge amount
p2 = new JPanel();
p2.setLayout(new FlowLayout(FlowLayout.LEFT)); …Run Code Online (Sandbox Code Playgroud) 当使用JFormattedTextFieldfor浮动时,我无法看到点后面的部分.例如:如果我填写3.14,格式化的文本字段将其替换为3?
JFormattedTextField aR = new JFormattedTextField(new Float(0.00));
aR.addPropertyChangeListener("value", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println(evt.getNewValue());
}
});
Run Code Online (Sandbox Code Playgroud) 我有以下代码用于JFormattedTextField接受用户输入的日期。
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
JFormattedTextField DOB = new JFormattedTextField(df);
Run Code Online (Sandbox Code Playgroud)
现在我如何从JFormattedTextField用户提交表单时读取日期?
例如,如果它是JTextField我们使用的fieldname.getText().