我正在尝试向Swing JLabel和JTextArea添加功能,以便:
boolean ignoreInput = false;
int charMax = 500;
JLabel charCntLabel = getLabel();
JTextArea myTextArea = getTextArea();
myTextArea.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
return;
}
@Override
public void keyReleased(KeyEvent e) {
// If we should be ignoring input then set make sure we
// enforce max character count and remove the newly typed key.
if(ignoreInput)
myTextArea.setText(myTextArea.getText().substring(0,
myTextArea.getText().length()));
}
@Override
public void keyPressed(KeyEvent e) {
String charsRemaining = " characters remaining";
int newLen = 0;
// The key has just been pressed so Swing hasn't updated
// the text area with the new KeyEvent.
int currLen = myTextArea.getText().length();
// Adjust newLen depending on whether the user just pressed
// the backspace key or not.
if(e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
newLen = currLen - 1;
ignoreInput = false;
}
else
newLen = currLen + 1;
if(newLen < 0)
newLen = 0;
if(newLen == 0)
charCntLabel.setText(charMax + " characters maximum!");
else if(newLen >= 0 && newLen < charMax)
charCntLabel.setText((charMax - newLen) + charsRemaining);
else if(newLen >= charMax) {
ignoreInput = true;
charCntLabel.setText("0 " + charsRemaining);
}
}
});
提前道谢。
您可以通过使用DocumentFilter来限制最大大小,检查此文档部分,它有一个您需要的工作示例。
以这个为例,我使用了上面示例文件中的组件:
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import components.DocumentSizeFilter;
public class Test {
public static void main(String[] args) {
new TestFrame().setVisible(true);
}
private static class TestFrame extends JFrame{
private JTextField textField;
private DefaultStyledDocument doc;
private JLabel remaningLabel = new JLabel();
public TestFrame() {
setLayout(new BorderLayout());
textField = new JTextField();
doc = new DefaultStyledDocument();
doc.setDocumentFilter(new DocumentSizeFilter(500));
doc.addDocumentListener(new DocumentListener(){
@Override
public void changedUpdate(DocumentEvent e) { updateCount();}
@Override
public void insertUpdate(DocumentEvent e) { updateCount();}
@Override
public void removeUpdate(DocumentEvent e) { updateCount();}
});
textField.setDocument(doc);
updateCount();
add(textField, BorderLayout.CENTER);
add(remaningLabel, BorderLayout.SOUTH);
setLocationRelativeTo(null);
pack();
}
private void updateCount()
{
remaningLabel.setText((500 -doc.getLength()) + " characters remaining");
}
}
}
问题内容: 我正在尝试向Swing JLabel和JTextArea添加功能,例如: 仅允许用户在文本区域中输入500个字符(最大) 标签包含一个字符串消息,告诉用户他们还剩下多少个字符(在每次按键或退格后) 组件初始化时,标签显示为“最多500个字符!” 对于键入的前500个字符,对于键入的每个键击(a-z,A-Z,0-9和标点符号),标签都会读取“剩余x个字符”,这是它们到达字符前剩余的字符数
我需要执行一些任务。有些任务是独立的,有些任务依赖于其他任务的成功执行。独立任务可以并行运行以获得更好的性能。我把这些任务称为服务。列说明哪些服务将以串联方式执行,哪些服务将以并联方式执行。列描述了一组定义的服务所遵循的执行顺序。例如,服务A和B应该并行运行。如果它们已成功执行,则将执行服务C。请注意,服务C并不直接依赖于其先前服务的输出,但它必须在成功执行其先前服务后运行,因为服务C在执行期间需
问题内容: 我的索引具有如下所述的数据。 如何在Java中编写Elasticsearch查询。如果我按日期搜索2016-13-01T12:00:00我希望看到每个groupId的最新版本,其indexDate小于或等于搜索日期? 预期输出: 我没有在Elasticsearch的日期字段中看到max函数来实现这一点。 问题答案: 我将首先进行汇总,然后使用子汇总,以降序排序并返回该存储区的第一个文档
我能够使用javascript和three.js库创建一个球体。然而,我有一个图像,我想覆盖在球体的顶部,每当我这样做,球体变成一个黑色的球体,没有图像投射在上面。下面是我如何实现它:var渲染器=new THREE. WebGL渲染器();renderer.set大小(window.inner宽度,window.inner高度);document.body.append(renderer.dom
本文向大家介绍iOS 在主线程上执行,包括了iOS 在主线程上执行的使用技巧和注意事项,需要的朋友参考一下 示例 当异步执行任务时,通常需要确保在主线程上运行一段代码。例如,您可能要异步访问REST API,但将结果放在屏幕上的UILabel中。在更新UILabel之前,必须确保您的代码在主线程上运行: 每当您更新屏幕上的视图时,请始终确保您正在主线程上执行此操作,否则可能会发生未定义的行为。
曲线概述 在“曲线”调整中,可以调整图像的整个色调范围内的点。最初,图像的色调在图形上表现为一条直的对角线。在调整 RGB 图像时,图形右上角区域代表高光,左下角区域代表阴影。图形的水平轴表示输入色阶(初始图像值);垂直轴表示输出色阶(调整后的新值)。在向线条添加控制点并移动它们时,曲线的形状会发生更改,反映出图像调整。曲线中较陡的部分表示对比度较高的区域;曲线中较平的部分表示对比度较低的区域。