gpt4 book ai didi

Java - 强制文本字段格式 - UX - 00 :00:00;00

转载 作者:行者123 更新时间:2023-11-30 08:50:27 25 4
gpt4 key购买 nike

请看下图我当前应用程序的用户界面

enter image description here

目前,我正在后端强制执行文本字段的数据格式。如果 RegEx 确实匹配 (00:00:00;00),它将抛出错误。

我的问题是从用户体验的角度来看,是否可以让文本框的输入以一种不需要用户输入“: : ;”的方式使用人物?我正在尝试实现功能,以便他们可以在框中输入 10002000,它会在框架上可视化地格式化为 (10:00:20;00)。

图形用户界面.java

package xml.editor;
import java.awt.*;
import java.awt.event.*;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class GUI extends JPanel implements ActionListener
{

TextField startTime, durationField;
Button save;

/**
*
*/
private static final long serialVersionUID = 1L;

private Parser xmlEditor;
private String startTimeValue;
private String durationValue;


// Constructor Requires FilePath
// File Path fed from Main

public GUI(String fp){
init(fp);
}


public void init(String fp) {

// Create the Parser

this.setXmlEditor(new Parser(fp));

add(new Label("Start Time"));

// Current Values of Fields to be changed

startTimeValue = xmlEditor.getStartTimeValue();
durationValue = xmlEditor.getDurationValue();

// Text Fields start with current value
startTime = new TextField(startTimeValue);

add(new Label("Duration"));
durationField = new TextField(durationValue);

save = new Button("save");
save.addActionListener(this);


add(startTime);
add(durationField);
add(save);

}

public void displayError(String error){
/*
* Error Handling UI Layout
*/

JFrame f = new JFrame(error);
Container contentPane = f.getContentPane();
contentPane.add(new Label(error));

f.pack();
f.setVisible(true);

//error
}

public void actionPerformed(ActionEvent e)
{


if(checkTextForm(startTime.getText())){
xmlEditor.updateStartTimeValue(startTime.getText());
}else{
displayError("Start Time Format Error");
}
if(checkTextForm(durationField.getText())){
xmlEditor.updateDurationValue(durationField.getText());
}else{
displayError("End Time Format Error");
}

if((checkTextForm(startTime.getText()) && checkTextForm(durationField.getText()))){
System.exit(0);

}






}

public boolean checkTextForm(String text){



if(text.matches("\\d\\d:\\d\\d:\\d\\d;\\d\\d")){
System.out.println("testtest");
return true;
}
else{
return false;
}


}


public Parser getXmlEditor() {
return xmlEditor;
}

public void setXmlEditor(Parser xmlEditor) {
this.xmlEditor = xmlEditor;
}

}

如果有任何从哪里开始的建议,或者是否有我应该使用的特定对象而不是 TextField,请告诉我。

谢谢,

最佳答案

如何将 JFormattedTextFieldMaskFormatter 一起使用。

JFormattedTextField formattedTextField = new JFormattedTextField();     
try {
MaskFormatter maskFormatter = new MaskFormatter("##:##:##;##");
maskFormatter.setPlaceholderCharacter('0');
maskFormatter.install(formattedTextField);
} catch (ParseException e) {
e.printStackTrace();
}

更多信息请访问 http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html

演示代码:

JFrame frame = new JFrame("");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();

JFormattedTextField field1 = new JFormattedTextField();
field1.setColumns(10);
JFormattedTextField field2 = new JFormattedTextField();
field2.setColumns(10);
try {
MaskFormatter mask1 = new MaskFormatter("##:##:##;##");
mask1.setPlaceholderCharacter('0');
mask1.install(field1);

MaskFormatter mask2 = new MaskFormatter("##:##:##;##");
mask2.setPlaceholderCharacter('0');
mask2.install(field2);
} catch (ParseException e) {
e.printStackTrace();
}
panel.add(field1);
panel.add(field2);

frame.add(panel);
frame.pack();
frame.setVisible(true);

关于Java - 强制文本字段格式 - UX - 00 :00:00;00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com