限制每个 JTextArea 行上的字符数
Limit number of character on every JTextArea line
我在 JDialog
中有一个 JTextArea
。 JDialog
使用 GridLayout
.
我想在 JTextArea
的每一行上有 7 位数字(每行将是一个 7 int
注册号)。出于用户体验的原因,我希望 JTextArea
添加新行或在一行达到 7 个字符时停止扩展。
无效的事情:
- 在 JTextArea
构造函数中指定列数
- matriculesText.setLineWrap(true);
和 matriculesText.setWrapStyleWord(true);
恐怕 uploadDialogManager.setHgap(20);
可能会破坏密码。我想知道 JDialog
是否应该有一个固定的大小。
这就是我构建 JDialog
的方式:
// initialization
Dialog uploadParent = null;
JDialog uploadDialog = new JDialog(uploadParent);
GridLayout uploadDialogManager = new GridLayout(UPLOAD_DIALOG_ROWS,
UPLOAD_DIALOG_COLUMNS);
// uploadDialog properties
uploadDialog.setSize(new Dimension(UPLOAD_DIALOG_WIDTH, UPLOAD_DIALOG_HEIGHT));
uploadDialog.setLayout(uploadDialogManager);
uploadDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
//Set up the horizontal gap value
uploadDialogManager.setHgap(20);
//Set up the vertical gap value
uploadDialogManager.setVgap(20);
//Set up the layout of the buttons
//uploadDialogManager.layoutContainer();
// components initialization
JLabel exerciceLabel = new JLabel("exercice number : ");
JComboBox<Integer> exerciceNumbers = new JComboBox<Integer>
(EXERCICE_NUMBERS);
JLabel matriculeLabel = new JLabel("please enter your matricules, one per
line : ");
JTextArea matriculesText = new JTextArea(1, 1);
JButton confirm = new JButton("confirm");
JButton cancel = new JButton("cancel");
matriculesText.setLineWrap(true);
matriculesText.setWrapStyleWord(true);
我做了另一个满足我要求的解决方案。当达到 7 个字符时,我没有换行,而是使用 MATRICULE_REGEX
检查每一行是否包含 7 个数字 (1\d{6}
)。如果没有,我拒绝 JTextArea
内容。
private static final String MATRICULE_REGEX = "1\d{6}(\n1\d{6})*";
Pattern matriculePattern = Pattern.compile(MATRICULE_REGEX);
Matcher matriculeMatcher = null;
matriculeMatcher = matriculePattern.matcher(text);
isValidMatricule = matriculeMatcher.matches();
我在 JDialog
中有一个 JTextArea
。 JDialog
使用 GridLayout
.
我想在 JTextArea
的每一行上有 7 位数字(每行将是一个 7 int
注册号)。出于用户体验的原因,我希望 JTextArea
添加新行或在一行达到 7 个字符时停止扩展。
无效的事情:
- 在 JTextArea
构造函数中指定列数
- matriculesText.setLineWrap(true);
和 matriculesText.setWrapStyleWord(true);
恐怕 uploadDialogManager.setHgap(20);
可能会破坏密码。我想知道 JDialog
是否应该有一个固定的大小。
这就是我构建 JDialog
的方式:
// initialization
Dialog uploadParent = null;
JDialog uploadDialog = new JDialog(uploadParent);
GridLayout uploadDialogManager = new GridLayout(UPLOAD_DIALOG_ROWS,
UPLOAD_DIALOG_COLUMNS);
// uploadDialog properties
uploadDialog.setSize(new Dimension(UPLOAD_DIALOG_WIDTH, UPLOAD_DIALOG_HEIGHT));
uploadDialog.setLayout(uploadDialogManager);
uploadDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
//Set up the horizontal gap value
uploadDialogManager.setHgap(20);
//Set up the vertical gap value
uploadDialogManager.setVgap(20);
//Set up the layout of the buttons
//uploadDialogManager.layoutContainer();
// components initialization
JLabel exerciceLabel = new JLabel("exercice number : ");
JComboBox<Integer> exerciceNumbers = new JComboBox<Integer>
(EXERCICE_NUMBERS);
JLabel matriculeLabel = new JLabel("please enter your matricules, one per
line : ");
JTextArea matriculesText = new JTextArea(1, 1);
JButton confirm = new JButton("confirm");
JButton cancel = new JButton("cancel");
matriculesText.setLineWrap(true);
matriculesText.setWrapStyleWord(true);
我做了另一个满足我要求的解决方案。当达到 7 个字符时,我没有换行,而是使用 MATRICULE_REGEX
检查每一行是否包含 7 个数字 (1\d{6}
)。如果没有,我拒绝 JTextArea
内容。
private static final String MATRICULE_REGEX = "1\d{6}(\n1\d{6})*";
Pattern matriculePattern = Pattern.compile(MATRICULE_REGEX);
Matcher matriculeMatcher = null;
matriculeMatcher = matriculePattern.matcher(text);
isValidMatricule = matriculeMatcher.matches();