Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Graphics/Graphics2D中选择文本 使用图形/Graphics2D选择文本_Java_Text_Textbox_Graphics2d_Textselection - Fatal编程技术网

Java 在Graphics/Graphics2D中选择文本 使用图形/Graphics2D选择文本

Java 在Graphics/Graphics2D中选择文本 使用图形/Graphics2D选择文本,java,text,textbox,graphics2d,textselection,Java,Text,Textbox,Graphics2d,Textselection,在图形中渲染时,如何使用鼠标从字符串中选择文本 嘿,我正在为我用JAVA制作的软件开发UI控件。我正在使用Graphics/Graphics2D渲染所有内容,我遇到一个问题需要一些帮助。我已经设置好了文本框控件,这样你就可以输入和退格文本了。我的下一个问题是能够选择本文的部分内容。我不确定该从哪里着手处理这件事。低我会张贴在我的控件渲染代码和它的键入代码 渲染代码 在图形中渲染时,如何使用鼠标从字符串中选择文本 添加一个,当它触发时,检查它是否在字符串的范围内 检查字符串的边界的方法:

在图形中渲染时,如何使用鼠标从字符串中选择文本

嘿,我正在为我用JAVA制作的软件开发UI控件。我正在使用Graphics/Graphics2D渲染所有内容,我遇到一个问题需要一些帮助。我已经设置好了文本框控件,这样你就可以输入和退格文本了。我的下一个问题是能够选择本文的部分内容。我不确定该从哪里着手处理这件事。低我会张贴在我的控件渲染代码和它的键入代码

渲染代码
在图形中渲染时,如何使用鼠标从字符串中选择文本

添加一个,当它触发时,检查它是否在
字符串的范围内

检查
字符串的边界的方法:


在图形中渲染时,如何使用鼠标从字符串中选择文本

添加一个,当它触发时,检查它是否在
字符串的范围内

检查
字符串的边界的方法:


1)您描述了一个问题,但到目前为止还没有提出任何问题(更不用说具体的、可回答的问题了)。你的问题是什么?2) 为了更快地获得更好的帮助,请发布。在图形中渲染时如何使用鼠标从字符串中选择文本?
在图形中渲染时如何使用鼠标从字符串中选择文本?
-复制现有Swing text field组件中的代码。或者你可以只使用JTextField。1)你已经描述了一个问题,但到目前为止还没有提出一个问题(更不用说一个具体的、可回答的问题了)。你的问题是什么?2) 为了更快地获得更好的帮助,请发布。在图形中渲染时如何使用鼠标从字符串中选择文本?
在图形中渲染时如何使用鼠标从字符串中选择文本?
-复制现有Swing text field组件中的代码。或者你可以只使用JTextField。我会尝试这种方法,如果我找到结果,我会发布答案。如果我找到结果,我会尝试这种方法并发布答案。
@Override
public void render(Graphics g) {

    // Draw Fill
    Graphics2D g2 = (Graphics2D) g.create();
    if (isActive) {
        g2.setPaint(new GradientPaint(new Point(x, y), Colors.textboxActiveTop, new Point(x, y + h), Colors.textboxActiveBottom));
    } else {
        g2.setPaint(new GradientPaint(new Point(x, y), Colors.textboxTop, new Point(x, y + h), Colors.textboxBottom));
    }
    g2.fillRect(x, y, w, h);

    // Draw Text
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    if (isPassword) {
        int count = text.toString().length();
        for (int i = 0; i < text.toString().length(); i++) {
            g2.setColor(Colors.white50percent);
            g2.fillArc(x + (w / 2) + (i * 5) - ((count * 5) / 2), y + (h / 2), 4, 4, 0, 360);
            g2.setColor(foreColor);
            g2.fillArc(x + (w / 2) + (i * 5) - ((count * 5) / 2), y + (h / 2) - 1, 4, 4, 0, 360);
        }
    } else {
        if (isCentered) {
            g2.setColor(Colors.white50percent);
            g2.drawString(text.toString(), x + (w / 2) - (g.getFontMetrics().stringWidth(text.toString()) / 2), y + (h / 2) + (g.getFontMetrics().getMaxAscent() / 2) + 1);
            g2.setColor(foreColor);
            g2.drawString(text.toString(), x + (w / 2) - (g.getFontMetrics().stringWidth(text.toString()) / 2), y + (h / 2) + (g.getFontMetrics().getMaxAscent() / 2));
        } else {
            g2.setColor(Colors.white50percent);
            g2.drawString(text.toString(), x + 5, y + (h / 2) + (g.getFontMetrics().getMaxAscent() / 2) + 1);
            g2.setColor(foreColor);
            g2.drawString(text.toString(), x + 5, y + (h / 2) + (g.getFontMetrics().getMaxAscent() / 2));
        }
    }
    // Draw Border
    g.setColor(Colors.borderColor);
    g.drawRect(x, y, w, h);

    // Draw Hightlights
    g.setColor(Colors.white50percent);
    g.drawRect(x + 1, y + 1, w - 2, h - 2);
    g.drawRect(x - 1, y - 1, w + 2, h + 2);
}
@Override
public void keyTyped(KeyEvent e) {
    int code = (int) e.getKeyChar();
    if (isActive) {
        if (code == 8) {
            if (text.toString().length() >= 1) {
                text = text.toString().substring(0, text.toString().length() - 1);
            }
        } else {
            String character = "" + (char)code;
            if(acceptedCharacters.contains(character.toLowerCase()))
                text = text.toString() + (char) code;
        }
    }
}