如何使JLabel可复制?

4
我有一个问题,关于如何制作可复制的JLabel。我有一个下拉菜单,它接收输入并将其显示为JLabel,当菜单更改时,标签也会更改。然而,我想使JLabel可复制。我听说这是不可能的,所以我将标签更改为字符串,并将其输出为textarea。但是当我这样做时,当我从下拉菜单中选择一个新选项时,该字符串不会更改。由于我是Java的新手,请尽可能详细地解释,谢谢。
这里是我的一些代码片段。我真的只需要一种方法来使JTextArea/JLabel可复制并且能够更改。
String[] players = {"Nearest Player", "All Players", "Random Player"};
JComboBox<String> player = new JComboBox<String>(players);
JLabel playernumb = new JLabel ("@p");
JLabel playerprompt = new JLabel("Target Player:");

JTextPane box = new JTextPane();

public static void main(String[] args) {
    mc frame = new mc();
    frame.setVisible(true);
}



player.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            if (e.getSource() == player){
                JComboBox temp1 = (JComboBox)e.getSource();
                String playertxt = (String)temp1.getSelectedItem();
                switch (playertxt){
                    case "Nearest Player": playernumb.setText("@p");
                        break;
                    case "All Players": playernumb.setText("@a");
                        break;
                    case "Random Player": playernumb.setText("@r");
                        break;
                    default: break;
                }
            }
        }
    });


    add(playerprompt);
    add(player);
    box.insertComponent(playernumb);

1
你可以给JLabel添加MouseListener,在右键单击(或任何单击)时将标签的文本复制到剪贴板中。或者你可以通过拖放来获取它的文本。为了更好地帮助你,创建并发布一个最小化、可编译、可运行的示例程序,让我们一起尝试。 - Hovercraft Full Of Eels
尝试实现拖放功能,然后您就能够复制/粘贴。 - Roman C
另外,请澄清一下您所说的“我想让JLabel可复制”的意思。 “可复制”是指什么? - Hovercraft Full Of Eels
1
虽然你可能最好使用JTextField,只需将其外观设置为JLabel即可。 - Hovercraft Full Of Eels
1个回答

9
只需使用此代码片段即可使JTextPane看起来像JLabel。
JTextPane f = new JTextPane();
f.setContentType("text/html"); // let the text pane know this is what you want
f.setEditable(false); // as before
f.setBackground(null); // this is the same as a JLabel
f.setBorder(null); // remove the border

感谢这个问题:如何从JLabel中选择文本?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接