标签: jtextcomponent

向应用程序中的所有 Swing 文本组件添加上下文菜单

Swing 文本组件没有带有剪切/复制/粘贴等功能的上下文菜单。我想添加一个,以便它表现得更流畅,就像一个本机应用程序。我为此编写了一个菜单,效果很好。我使用以下方法将其添加到每个文本框:

someTextBox.setComponentPopupMenu(TextContextMenu.INSTANCE);
Run Code Online (Sandbox Code Playgroud)

问题是,到处添加这个很烦人。其次,如果我忘记在某个地方的文本框,应用程序就会不一致。第三,我无法将其添加到我无法控制创建代码的文本框中,例如来自JOptionPane.showInputDialogJFileChooser对话框的文本框。

有没有办法覆盖JTextComponent应用程序范围的默认上下文菜单?我知道这将是一种令人毛骨悚然的远距离行动,但我对此表示同意。也欢迎对菜单本身发表评论。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.JTextComponent;

public class TextContextMenu extends JPopupMenu implements ActionListener {
    public static final TextContextMenu INSTANCE = new TextContextMenu();
    private final JMenuItem itemCut;
    private final JMenuItem itemCopy;
    private final JMenuItem itemPaste;
    private final JMenuItem itemDelete;
    private final JMenuItem itemSelectAll;

    private TextContextMenu() {
        itemCut = newItem("Cut", 'T');
        itemCopy = newItem("Copy", 'C');
        itemPaste = newItem("Paste", 'P');
        itemDelete = newItem("Delete", 'D');
        addSeparator();
        itemSelectAll = newItem("Select …
Run Code Online (Sandbox Code Playgroud)

java swing contextmenu jtextcomponent

1
推荐指数
1
解决办法
1176
查看次数

如何在 JTextArea 中重新定位光标

我已经在 中设置了一些文本JTextArea。光标位于第 5 行。现在我想在第一行设置一些文本。

那么是否可以将光标重新定位到所需的行呢?

java swing jtextcomponent

1
推荐指数
2
解决办法
2175
查看次数

可选择的JLabel,不仅仅是JTextfield

我需要能够在JLabel中选择文本.我已经在网上阅读了一些关于使用JTextfield来模拟JLabel的指南,但这对我来说没用,因为我的JLabel将跨越多行.那么关于如何做到这一点或任何可能的想法?

java swing jtextcomponent

0
推荐指数
1
解决办法
1273
查看次数

JLabel字符串包装没有空格

我使用html在JLabel中创建跨越多行的文本.但是,如果我输入一个没有空格的长字符串,它就不会转到新行,而是使底层的JScrollpane显示一个水平滚动条,并将JLabel右侧的组件推出视图区域.所以任何人都知道在JLabel中是否可以在没有空格的情况下自动换行字符串?

java swing jtextarea word-wrap jtextcomponent

0
推荐指数
1
解决办法
758
查看次数

在TabbedPane中使用TextArea

我在每个标签中添加了一个带有JPanel的JTabbedPane.和每个JPanel中的JText区域.选项卡可以在同一模板中动态创建.

酒店还设有带菜单的菜单栏.它有替换字符串出现的选项(例如将"<"替换为"<")当我刚使用JPanel和textArea时,它完美地工作.

现在我已经添加了tabbedPane,...我不知道如何单独替换活动选项卡的内容,...

我试过获取所选组件(getSelectedComponent()方法和getComponentAt()方法)并替换文本,..我没有工作

有人能帮我吗

java swing jtabbedpane jtextcomponent

0
推荐指数
1
解决办法
1807
查看次数

将多行JTextArea内容写入文件

我必须将textarea的内容写入包含换行符的文件中.我得到了输出,它被写成文件中的一个字符串.

public void actionPerformed(ActionEvent ev) {

text.setVisible(true);
String str= text.getText();
System.out.println(str);

try {
    BufferedWriter fileOut = new BufferedWriter(new FileWriter("filename.txt")); 


    fileOut.write(str);

    fileOut.close();
} catch (IOException ioe) {
    ioe.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)

输出应该是:

I
am
King.
Run Code Online (Sandbox Code Playgroud)

但它显示:

IamKing.
Run Code Online (Sandbox Code Playgroud)

请给我一些建议

java swing jtextarea filewriter jtextcomponent

0
推荐指数
1
解决办法
1772
查看次数

Java Swing:使用文档侦听器处理返回键

我有一个文件监听器,工作得很好.但是,我想为它添加一些功能,以便当用户点击Enter键时,焦点转移到另一个对象.我无法弄清楚如何陷阱.这是我的代码:

txtNum1.getDocument().addDocumentListener(new DocumentListener() {

            @Override
            public void insertUpdate(DocumentEvent e) {
                setAnswer(e);
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                setAnswer(e);
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                setAnswer(e);
            }

            private void setAnswer(DocumentEvent e) {
                if (txtNum1.getText().equals("")) {
                    num1 = 0;
                } else {
                    num1 = Integer.parseInt(txtNum1.getText());
                }
                calcAnswer();
                System.out.println(e); //trying to output the event 'Enter'
            }
Run Code Online (Sandbox Code Playgroud)

我可以通过一个关键的监听器来做到这一点,但是在使用这种方法之前我已经在这个网站上被责骂了,所以我试图以正确的方式学习这个.

谢谢!

编辑:根据下面的建议,我添加了以下代码,但似乎没有任何效果.谁能看到我失踪的东西?谢谢!

/* If the user hits the Enter key, we want the focus to shift to
 * the next text field */
txtNum1.addActionListener(new …
Run Code Online (Sandbox Code Playgroud)

java swing jtextcomponent documentlistener

0
推荐指数
1
解决办法
921
查看次数

自定义摆动JTextComponent

我想创建一个看起来像JTextArea的JTextArea,像JTextArea一样,像JTextArea一样响应,像JTextArea一样说话,像JTextArea一样移动,但不是JTextArea.

为了缩短它,我想在JTextArea上创建一个100%的自定义swing组件.一旦我这样做,我将能够更改JTextArea的其他硬编码属性并创建我自己的自定义JTextArea.没有按照我需要的方式设计预定义的swing组件,但JTextArea是最接近的,这就是我选择它的原因.

我想改变JTextArea行的间距.不,我不想使用JtextPane,我已经尝试过,它不适用于我的程序,它不同地计算它的位置,它看起来不同,并且应用JtextArea边框只是进一步混乱.

我不是试图扩展JTextArea,我正在尝试创建一个自定义的JTextArea,就像在自定义swing组件中一样,改变了硬编码的属性,这些属性是不可配置的JTextAreas方法.

但是,我不知道该怎么做.我一直在互联网上查找它,但是只有一个关于从stracth构建自己的组件的广泛指南...

弄清楚这将花费大量时间,并不会真正解决我的问题.

我唯一需要做的就是创建一个包含构建JTextArea的每个类的类(或几个类).从JTextComponent级别开始,复制用于创建JTextArea的所有较低级别的类.我还要注意我使用Nibus的外观和感觉,我认为可能需要包含一些类,以便自定义JTextArea在该LAF下正常运行.

我查看了swing源代码,它充满了各种各样的东西.确定在创建JTextArea时使用哪些类或它们的部分将是一个耗时的噩梦,因为我不知道核心的摆动结构和机制.

这就是为什么我要求有知识的人至少列出我需要复制JTextArea的类,然后我会弄清楚如何编写它们.

因为,如果我现在开始学习摇摆核心机制,我需要花费数天和数周的时间来解决这一问题,但对于知道的人来说,只需几分钟就可以列出我需要关注的所有课程.关注.

我想在这里采取捷径.我不想完全理解挥杆,我只是希望这件事能够发挥作用.默认间距是一个像素太低,我想做的就是让它像素更高.我不想知道画家如何在屏幕上绘制组件,我只想知道它在哪里被调用以及它自称为什么......

感谢任何花时间的人.

java swing jtextarea nimbus jtextcomponent

-2
推荐指数
1
解决办法
672
查看次数