I am trying to get cut and paste to work from menu. Below is code I have can someone point me where I am going wrong I have the same problem with File selection to open and save using JFileChooser.
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import javax.swing.*;
public class MenuCheck
{
static class MenuActionListener implements ActionListener
{
public void actionPerformed(ActionEvent actionEvent)
{
System.out.println("Selected:" + actionEvent.getActionCommand());
}
}
public static void main(String[] args)
{
Runnable runner = new Runnable()
{
public void run()
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame aframe = new JFrame("LogTrack");
aframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLO SE);
aframe.setSize(800, 600);
aframe.setVisible(true);
ActionListener menuListener = new MenuActionListener();
JMenuBar menuBar = new JMenuBar();
JMenu logMenu;
JMenuItem menuItem;
//Set up the File menu.
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
menuBar.add(fileMenu);
//Set up the Open menu item for File menu.
JMenuItem OpenMenuItem = new JMenuItem("Open");
OpenMenuItem.addActionListener(menuListener);
OpenMenuItem.setMnemonic(KeyEvent.VK_O);
OpenMenuItem.setAccelerator(KeyStroke.getKeyStroke (
KeyEvent.VK_O, ActionEvent.ALT_MASK));
OpenMenuItem.setActionCommand("open");
fileMenu.add(OpenMenuItem);
//Set up the Save menu item for File menu.
JMenuItem SaveMenuItem = new JMenuItem("Save");
SaveMenuItem.setMnemonic(KeyEvent.VK_S);
SaveMenuItem.setAccelerator(KeyStroke.getKeyStroke (
KeyEvent.VK_S, ActionEvent.ALT_MASK));
SaveMenuItem.setActionCommand("save");
SaveMenuItem.addActionListener(menuListener);
fileMenu.add(SaveMenuItem);
//Set up the Quit/Exit menu item for Log menu.
JMenuItem QuitMenuItem = new JMenuItem("Quit");
QuitMenuItem.setMnemonic(KeyEvent.VK_Q);
QuitMenuItem.setAccelerator(KeyStroke.getKeyStroke (
KeyEvent.VK_Q, ActionEvent.ALT_MASK));
QuitMenuItem.setActionCommand("quit");
QuitMenuItem.addActionListener(menuListener);
fileMenu.add(QuitMenuItem);
JMenu tileMenu = new JMenu("Tiling Frame"); tileMenu.setMnemonic(KeyEvent.VK_F);
menuBar.add(tileMenu);
//Setup Copy and Paste
JMenu editMenu = new JMenu("Edit");
editMenu.setMnemonic(KeyEvent.VK_E);
menuBar.add(editMenu);
JMenuItem cutMenuItem = new JMenuItem("Cut", KeyEvent.VK_T);
cutMenuItem.addActionListener(menuListener);
KeyStroke ctrlXKeyStroke = KeyStroke.getKeyStroke("control X");
editMenu.add(cutMenuItem);
JMenuItem copyMenuItem = new JMenuItem ("Copy", KeyEvent.VK_C);
copyMenuItem.addActionListener(menuListener);
KeyStroke ctrlCKeyStroke = KeyStroke.getKeyStroke("control C");
copyMenuItem.setAccelerator(ctrlCKeyStroke);
editMenu.add(copyMenuItem);
JMenuItem pasteMenuItem = new JMenuItem("Paste", KeyEvent.VK_P);
pasteMenuItem.addActionListener(menuListener);
KeyStroke ctrlVKeyStroke = KeyStroke.getKeyStroke("control V");
pasteMenuItem.setAccelerator(ctrlVKeyStroke);
pasteMenuItem.setEnabled(false);
editMenu.add(pasteMenuItem);
aframe.setJMenuBar(menuBar);
aframe.setVisible(true);
JTextArea text = new JTextArea();
getContentPane().add(text);
Clipboard clipbd = getToolkit().getSystemClipboard();
class CopyMenuItem implements ActionListener {
public void actionPerformed(ActionEvent e) {
String selection = text.getSelectedText();
if (selection == null)
return;
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
}
}
class CutMenutItem implements ActionListener {
public void actionPerformed(ActionEvent e) {
String selection = text.getSelectedText();
if (selection == null)
return;
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
text.replaceRange("", text.getSelectionStart(), text
.getSelectionEnd());
}
}
class PastemenuItem implements ActionListener {
public void actionPerformed(ActionEvent e) {
Transferable clipData = clipbd.getContents(CutAndPaste.this);
try {
String clipString = (String) clipData
.getTransferData(DataFlavor.stringFlavor);
text.replaceRange(clipString, text.getSelectionStart(), text
.getSelectionEnd());
} catch (Exception ex) {
System.err.println("Not String flavor");
}
}
}
}
};
EventQueue.invokeLater(runner);
}
}
thanks.