Java 使JLabel可复制?

Java 使JLabel可复制?,java,swing,jlabel,Java,Swing,Jlabel,我有一个关于使JLabels可复制的问题。我有一个下拉菜单,它接受输入并将其显示为JLabel,并且当菜单更改时标签也会更改。但是,我想使JLabel可复制。我听说这是不可能的,所以我将标签更改为字符串,并将其作为文本区域输出。但是当我这样做时,当我从下拉菜单中选择一个新选项时,字符串不会改变。我是java新手,所以请尽量描述,谢谢 下面是我的一些代码。我真的需要一种方法使JTextArea/JLabel可复制,并使其能够更改 String[] players = {"Nearest Playe

我有一个关于使JLabels可复制的问题。我有一个下拉菜单,它接受输入并将其显示为JLabel,并且当菜单更改时标签也会更改。但是,我想使JLabel可复制。我听说这是不可能的,所以我将标签更改为字符串,并将其作为文本区域输出。但是当我这样做时,当我从下拉菜单中选择一个新选项时,字符串不会改变。我是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);
String[]players={“最近的玩家”、“所有玩家”、“随机玩家”};
JComboBox播放器=新JComboBox(播放器);
JLabel playernumb=新JLabel(“@p”);
JLabel playerprompt=新JLabel(“目标玩家:”);
JTextPane box=新的JTextPane();
公共静态void main(字符串[]args){
mc帧=新mc();
frame.setVisible(true);
}
player.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
如果(例如getSource()==播放器){
JComboBox temp1=(JComboBox)e.getSource();
字符串playerText=(字符串)temp1.getSelectedItem();
开关(PlayerText){
大小写“最近的玩家”:playernumb.setText(“@p”);
打破
案例“所有玩家”:playernumb.setText(“@a”);
打破
案例“随机玩家”:playernumb.setText(@r”);
打破
默认:中断;
}
}
}
});
添加(播放提示);
添加(玩家);
框。插入组件(playernumb);

只需使用此代码片段使其看起来像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一个鼠标侦听器,然后右键单击(或任意单击),将标签文本复制到剪贴板。或者你可以通过拖放抓取它的文本。为了获得更好的帮助,请创建并发布一个,让我们来使用它。尝试实现拖放,然后您就可以复制/粘贴。另外,请澄清您的意思,
“我想使JLabel可复制”
。“可复制”是如何实现的?尽管您最好使用JTextField,让它看起来像一个JLabel。