gpt4 book ai didi

java - 支持复制选项

转载 作者:行者123 更新时间:2023-12-01 18:12:11 25 4
gpt4 key购买 nike

我正在 NetBeans 中编写 Java Swing 计算器。我有 JFrame、计算器按钮和名为 display 的 JTextField。我需要支持复制(还有 CTRL+C)选项。有谁知道如何做到这一点?

最佳答案

如果您想添加用于剪切/复制/粘贴的右键菜单,您可以使用组件已有的剪切/复制/粘贴操作,尽管我更喜欢重命名它们以使它们更容易阅读,因为“剪切”比“剪切到剪贴板”更容易阅读。

例如,如果您调用此方法并传入任何文本组件,它应该添加一个用于剪切-复制-粘贴的右键单击弹出菜单:

// allows default cut copy paste popup menu actions
private void addCutCopyPastePopUp(JTextComponent textComponent) {
ActionMap am = textComponent.getActionMap();
Action paste = am.get("paste-from-clipboard");
Action copy = am.get("copy-to-clipboard");
Action cut = am.get("cut-to-clipboard");

cut.putValue(Action.NAME, "Cut");
copy.putValue(Action.NAME, "Copy");
paste.putValue(Action.NAME, "Paste");

JPopupMenu popup = new JPopupMenu("My Popup");
textComponent.setComponentPopupMenu(popup);
popup.add(new JMenuItem(cut));
popup.add(new JMenuItem(copy));
popup.add(new JMenuItem(paste));
}

例如:

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

public class AddCopyAndPaste extends JPanel {
private JTextField textField = new JTextField("Four score and seven years ago...");
private JTextArea textArea = new JTextArea(15, 30);

public AddCopyAndPaste() {
addCutCopyPastePopUp(textField);
addCutCopyPastePopUp(textArea);

setLayout(new BorderLayout());
add(textField, BorderLayout.PAGE_START);
add(new JScrollPane(textArea), BorderLayout.CENTER);
}

// allows default cut copy paste popup menu actions
private void addCutCopyPastePopUp(JTextComponent textComponent) {
ActionMap am = textComponent.getActionMap();
Action paste = am.get("paste-from-clipboard");
Action copy = am.get("copy-to-clipboard");
Action cut = am.get("cut-to-clipboard");

cut.putValue(Action.NAME, "Cut");
copy.putValue(Action.NAME, "Copy");
paste.putValue(Action.NAME, "Paste");

JPopupMenu popup = new JPopupMenu("My Popup");
textComponent.setComponentPopupMenu(popup);
popup.add(new JMenuItem(cut));
popup.add(new JMenuItem(copy));
popup.add(new JMenuItem(paste));
}

private static void createAndShowGui() {
AddCopyAndPaste mainPanel = new AddCopyAndPaste();

JFrame frame = new JFrame("Add Copy And Paste");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}

关于java - 支持复制选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32160881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com