ScreenImage class to use clipboard

Anyone know how instead of writing this out to a file, it can copy that image to the clipboard?
thanks
here is the ScreenImage class..
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class ScreenImage
      *  Create a BufferedImage for Swing components.
      *  The entire component will be captured to an image.
      *  @param      component Swing component to create image from
      *  @param      fileName name of file to be created or null
      *  @return     image the image for the given region
      *  @exception IOException if an error occurs during writing
     public static BufferedImage createImage(JComponent component, String fileName)
          throws IOException
          Dimension d = component.getSize();
          if (d.width == 0)
               d = component.getPreferredSize();
               component.setSize( d );
          Rectangle region = new Rectangle(0, 0, d.width, d.height);
          return ScreenImage.createImage(component, region, fileName);
      *  Create a BufferedImage for Swing components.
      *  All or part of the component can be captured to an image.
      *  @param      component Swing component to create image from
      *  @param      region The region of the component to be captured to an image
      *  @param      fileName name of file to be created or null
      *  @return     image the image for the given region
      *  @exception IOException if an error occurs during writing
     public static BufferedImage createImage(JComponent component, Rectangle region, String fileName)
          throws IOException
          boolean opaqueValue = component.isOpaque();
          component.setOpaque( true );
          BufferedImage image = new BufferedImage(region.width, region.height, BufferedImage.TYPE_INT_RGB);
          Graphics2D g2d = image.createGraphics();
          g2d.setClip( region );
          component.paint( g2d );
          g2d.dispose();
          component.setOpaque( opaqueValue );
          ScreenImage.writeImage(image, fileName);
          return image;
      *  Create a BufferedImage for AWT components.
      *  @param      component AWT component to create image from
      *  @param      fileName name of file to be created or null
      *  @return     image the image for the given region
      *  @exception AWTException see Robot class constructors
      *  @exception IOException if an error occurs during writing
     public static BufferedImage createImage(Component component, String fileName)
          throws AWTException, IOException
          Point p = new Point(0, 0);
          SwingUtilities.convertPointToScreen(p, component);
          Rectangle region = component.getBounds();
          region.x = p.x;
          region.y = p.y;
          return ScreenImage.createImage(region, fileName);
      *  Convenience method to create a BufferedImage of the desktop
      *  @param      fileName name of file to be created or null
      *  @return     image the image for the given region
      *  @exception AWTException see Robot class constructors
      *  @exception IOException if an error occurs during writing
     public static BufferedImage createDesktopImage(String fileName)
          throws AWTException, IOException
          Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
          Rectangle region = new Rectangle(0, 0, d.width, d.height);
          return ScreenImage.createImage(region, fileName);
      *  Create a BufferedImage from a rectangular region on the screen.
      *  @param      region region on the screen to create image from
      *  @param      fileName name of file to be created or null
      *  @return     image the image for the given region
      *  @exception AWTException see Robot class constructors
      *  @exception IOException if an error occurs during writing
     public static BufferedImage createImage(Rectangle region, String fileName)
          throws AWTException, IOException
          BufferedImage image = new Robot().createScreenCapture( region );
          ScreenImage.writeImage(image, fileName);
          return image;
      *  Write a BufferedImage to a File.
      *  @param      image image to be written
      *  @param      fileName name of file to be created
      *  @exception IOException if an error occurs during writing
     public static void writeImage(BufferedImage image, String fileName)
          throws IOException
          if (fileName == null) return;
          int offset = fileName.lastIndexOf( "." );
          String type = offset == -1 ? "jpg" : fileName.substring(offset + 1);
          ImageIO.write(image, type, new File( fileName ));
     public static void main(String args[])
          throws Exception
          final JFrame frame = new JFrame();
          final JTextArea textArea = new JTextArea(30, 60);
          final JScrollPane scrollPane = new JScrollPane( textArea );
          frame.getContentPane().add( scrollPane );
          JMenuBar menuBar = new JMenuBar();
          frame.setJMenuBar( menuBar );
          JMenu menu = new JMenu( "File" );
          ScreenImage.createImage(menu, "menu.jpg");
          menuBar.add( menu );
          JMenuItem menuItem = new JMenuItem( "Frame Image" );
          menu.add( menuItem );
          menuItem.addActionListener( new ActionListener()
               public void actionPerformed(ActionEvent e)
                    //  Let the menu close and repaint itself before taking the image
                    new Thread()
                         public void run()
                              try
                                   Thread.sleep(50);
                                   System.out.println("Creating frame.jpg");
                                   frame.repaint();
                                   ScreenImage.createImage(frame, "frame.jpg");
                              catch(Exception exc) { System.out.println(exc); }
                    }.start();
          final JButton button = new JButton("Create Images");
          button.addActionListener( new ActionListener()
               public void actionPerformed(ActionEvent e)
                    try
                         System.out.println("Creating desktop.jpg");
                         ScreenImage.createDesktopImage( "desktop.jpg" );
                         System.out.println("Creating frame.jpg");
                         ScreenImage.createImage(frame, "frame.jpg");
                         System.out.println("Creating scrollpane.jpg");
                         ScreenImage.createImage(scrollPane, "scrollpane.jpg");
                         System.out.println("Creating textarea.jpg");
                         ScreenImage.createImage(textArea, "textarea.jpg");
                         System.out.println("Creating button.jpg");
                         ScreenImage.createImage(button, "button.jpg");
                         button.setText("button refreshed");
                         button.paintImmediately(button.getBounds());
                         System.out.println("Creating refresh.jpg");
                         ScreenImage.createImage(button, "refresh.jpg");
                         System.out.println("Creating region.jpg");
                         Rectangle r = new Rectangle(0, 0, 100, 16);
                         ScreenImage.createImage(textArea, r, "region.png");
                    catch(Exception exc) { System.out.println(exc); }
          frame.getContentPane().add(button, BorderLayout.SOUTH);
          try
               FileReader fr = new FileReader( "ScreenImage.java" );
               BufferedReader br = new BufferedReader(fr);
               textArea.read( br, null );
               br.close();
          catch(Exception e) {}
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.pack();
          frame.setLocationRelativeTo( null );
          frame.setVisible(true);
}

guess i was making it harder than it really is...
     BufferedImage im = createImage (component );
     ImageClipboard.setClipboard( im );ImageClipboard:
public  class  ImageClipboard {
    // This method writes a image to the system clipboard.
    // otherwise it returns null.
    public static void setClipboard(Image image) {
        ImageSelection imgSel = new ImageSelection(image);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imgSel, null);
    // This class is used to hold an image while on the clipboard.
    public static class ImageSelection implements Transferable {
        private Image image;
        public ImageSelection(Image image) {
            this.image = image;
        // Returns supported flavors
        public DataFlavor[] getTransferDataFlavors() {
            return new DataFlavor[]{DataFlavor.imageFlavor};
        // Returns true if flavor is supported
        public boolean isDataFlavorSupported(DataFlavor flavor) {
            return DataFlavor.imageFlavor.equals(flavor);
        // Returns image
        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
            if (!DataFlavor.imageFlavor.equals(flavor)) {
                throw new UnsupportedFlavorException(flavor);
            return image;
    // If an image is on the system clipboard, this method returns it;
    // otherwise it returns null.
    public static Image getClipboard() {
        Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
        try {
            if (t != null && t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
                Image text = (Image)t.getTransferData(DataFlavor.imageFlavor);
                return text;
        } catch (UnsupportedFlavorException e) {
        } catch (IOException e) {
        return null;
      * @param args
     public static void main(String[] args) {
          // TODO Auto-generated method stub
}thanks for the help!

Similar Messages

  • Help using Clipboard needed, please!

    Hi I would really appreciate a little help with the implementation of the Clipboard class in my applet/application.
    I am designing a small program, I will run through quickly how and what this project does. The program is designed to check text given by the user to make sure that it doesn't contain material already held in a separate protected text file. For example I have a text file on my computer I would open this file, select all, copy & paste this into my program. Then I would press an 'OK' button in the GUI, the program would then check whether any of the text given by the user was already in a separate text file which belongs to the program.
    So basically the program reads the user text comparing each line to the text file kept with the program. If the users text is the same as the external text file, the program would alert the user of this problem.
    I hope that made sense, so getting to the point about the Clipboard class. The text that the user is to input into the program would be considerable in size so it wouldn't be feasable to expect them to enter it by hand. It would be far more suitable for them to be able to use the Clipboard fascility so they could copy and paste into them program. If any of you have any examples of this class being used I would be really interested in seeing your work and adapt some of it to my own creation. Any other advice in the design or whatever would also well appreciated. I am keen to do all the hard work I'm just a little confused by the Clipboard class and would like a little guidance.
    Hope to hear something soon, Dave.

    First off, the Clipboard class is in
    java.awt.datatransfer, along with some other necessary
    classes and interfaces. Here's a quick'n'dirty way to
    get the contents:
    String contents =
    Toolkit.getDefaultToolkit().getSystemClipboard().getCon
    ents().getTransferData(DataFlavor.stringFlavor).toStrin
    ();It's a little messy, but break it down and it works
    quite easily. It would be nice to just have one
    static method that would do it all for you, but that
    might violate some programming style conventions.
    -Tim
    P.S. Just kidding, hambonethx this could be usefull :)

  • Can i create more than one attributes for the custom class created using java API

    Hello everyone,
    I have been creating class and its attributes programatically using java APIs, I want to know that is there any way to create multipal attributs for the same class in just one call of API with all the options for each attributes,
    thanks

    You can create a new class and define all of the Attributes at the time the class is created - this is the preferred way of creating classes. Use the addAttributeDefinition() method on ClassObjectDefinition. If you need to add attributes to existing classes, you can only add them one at a time (using the addAttribute() method on ClassObject).
    (dave)

  • Than how can i get java class by using it's class file?

    Hi
    After compilation of a java program, it creates a class file.
    After getting class file suppose class file has been deleted.
    Than how can i get java class by using it's class file?
    Thanks in advance.

    get a decompiler and run your class file through it--I'll assume you want the source code back and that you are not trying to recover a missing class file by attempting to use the class file that is missing--if it's missing, then I've not a clue on how to get it back by using what is already missing.
    BTW: many of your compilers have source control--if it does, just restore your missing file.

  • How to reference a class without using the new keyword

    I need to access some information from a class using the getter, but I don't want to use the new keyword because it will erase the information in the class. How can I reference the class without using the new keyword.
    ContactInfo c = new ContactInfo(); // problem is here because it erases the info in the class
    c.getFirstName();

    quedogf94 wrote:
    I need to access some information from a class using the getter, but I don't want to use the new keyword because it will erase the information in the class. How can I reference the class without using the new keyword.
    ContactInfo c = new ContactInfo(); // problem is here because it erases the info in the class
    c.getFirstName();No.
    Using new does not erase anything. There's nothing to erase. It's brand new. It creates a new instance, and whatever that constructor puts in there, is there. If you then change the contents of that instance, and you want to see them, you have to have maintained a reference to it somewhere, and access that instance's state through that reference.
    As already stated, you seem to be confused between class and instance, at the very least.
    Run this. Study the output carefully. Make sure you understand why you see what you do. Then, if you're still confused, try to rephrase your question in a way that makes some sense based on what you've observed.
    (And not that accessing a class (static) member through a reference, like foo1.getNumFoos() is syntactically legal, but is bad form, since it looks like you're accessing an instance (non-static) member. I do it here just for demonstration purposes.)
    public class Foo {
      private static int numFoos; // class variable
      private int x; // instance varaible
      public Foo(int x) {
        this.x = x;
        numFoos++;
      // class method
      public static int getNumFoos() {
        return numFoos;
      // instance method 
      public int getX() {
        return x;
      public static void main (String[] args) {
        System.out.println ("Foo.numFoos is " + Foo.getNumFoos ());
        System.out.println ();
        Foo foo1 = new Foo(42);
        System.out.println ("Foo.numFoos is " + Foo.getNumFoos ());
        System.out.println ("foo1.numFoos is " + foo1.getNumFoos ());
        System.out.println ("foo1.x is " + foo1.getX ());
        System.out.println ();
        Foo foo2 = new Foo(666);
        System.out.println ("Foo.numFoos is " + Foo.getNumFoos ());
        System.out.println ("foo1.numFoos is " + foo1.getNumFoos ());
        System.out.println ("foo1.x is " + foo1.getX ());
        System.out.println ("foo2.numFoos is " + foo2.getNumFoos ());
        System.out.println ("foo2.x is " + foo2.getX ());
        System.out.println ();
    }

  • Is it possible to call a class method using pattern in ABAP editor.

    Hi,
         Is it possible to call a class method using pattern in ABAP editor.
    Thank U for Ur time.
    Cheers,
    Sam

    Yes,
    Click patterns.
    Then choose Abap objects patterns.
    Click on the Tick
    It will give a new screen
    Here Give the name of the class first.
    Then the object (instance of the calss)
    And finally the method ..
    it will give you the pattern
    Hope this helps.

  • How do you know what classes to use ?

    Hello,
    This may sound daft - but how do you know what classes to use to do a particular task ? For example to do password-related stuff - how would I know which classes are all relevant to that ? Am I supposed to buy a book on the classes as the API documentation doesn't really tell you WHEN to use which classes.

    If you're using JSP, then your password field is likely going to be implemented in HTML. So that's nothing to do with Java. (And you can't use a JPassword field in a JSP page.) But when that field comes back to your server, you may be using Java to authenticate it. Even there, the question is not yet what Java method you are going to use, but what methodology. You could have a database to authenticate against, or an LDAP directory. Or you could have the web server use its built-in authentication, which means you don't have to do any Java coding at all. And there are other ways.
    So the question before yours is, how do you know what methodology to use? Again, that comes down to experience.

  • When an image is inserted here using clipboard, it appears in the editor, but it does not appear in

    when an image is inserted here in forum po editor using clipboard, it appears in the editor, but it does not appear in the post. When the image is inserted from a file, it works

    Im not completely sure, why you are pointing out the very same thing I'm pointing out too. If you re-read my original post thoroughly, you will find - at its very end - the sentence "When the image is inserted from a file, it works". Since I'm not aware of the way how to insert the image from a file in a procedure other, then clicking the "camera" icon, I hold such a sentence for more then enough to point out, that the camera icon works fine for me (if you re-read my post thoroughly and pay detailed attention of my expression "using clipboard", then you shall definitely evaluate this expression as covering both ways an image can reach the cliboard, eg. Copying from a graphical editor/processor or dragging&dropping a graphical file).
    However more then this, your post does in fact NOT reply to the fact, why the WYSIWYG editor box allows the insertion of an image from clipboard, but then fails to upload it and thus it is not displayed in the post.
    For the sake of completness, I must also point out, that your last sentence of your post "And that's what it is there for" does not bring much clarity about that thing - while I fully understand, as one can observe from my "When the image...it works" sentence, the functionality, purpose and propper handling of the "camera" icon, I cannot agree with such a behaviour of the editor, that allows an operation to be done (What You See) that does not affect the outcoming result (Is What You Get).
    From the theory of designing (G)UIs one may learn, that in such a case the operation should either fulfill completly (eg. display the clipboard-inserted image in the resulting post) or fail completly in the beginning (when Pasting the image into the text), either silently (just not displaying the image in the editor field) or with an error warning such as "Insertion of images/bitmaps from clipboard is not permitted". For Windows-like environments (such as, but not limited to, Microsoft Explorer, KDE, Gnome, IceWm....) the change of the dragging cursor to display a kind of "No way" or "no entry" pictogram, is also advisable.
    For the sake of completness of my reaction I also might percieve your last sentence as a kind of irony or sarcasm, which however I definitely do not find appropriate behaviour, more over I might call it an "arogant rudeness" in case of such a "VIP" member with more then 9000 posts in the time when this post is being written, with a hint of overworking, malicous intends, inattention, ego-centricism or any other personal failure(s) or a combination of them, that you should - in case they are present - definitely pay attention to in your private life.
    Moreover, let me please point out, that Im not much pleased about the way this forum works with its users, since I find the bug I have discovered, only a small one (a category B one might say in the A-B-C scheme, eg. a category, that does not directly influence or prohibit the execution of the main business cases, however it may result in discomfort, data loss or operation repetition, such a category would be most possibly a category C in the A-B-C-D scheme). Therefore I must explicitly express my annoyance that you have the guts to handle the post I did like this, when - in my opinion - the post has been written in such a manner that it was merly a polite point out of a small bug, thus it was kept as brief as possible, but fully covering the description of the scenario, alternate scenarios and their outcomes. Moreover, I'm definitely displeased, that you allow yourself to post such a post, that - instead of exploring the matter - throws the whole matter on the head and inside-out, or, one may say, kicks the bucket, and forces the original author, in this case me, for re-accounting for himself, moreover the ambivalency of your post opens such many possibilities to account for, that the time and resources the self-accounting autor has to spent, heavily overweighting the importance, significance and impact of the bug itslef.
    So let me please advise you for the next time:
    - to explore posts with more thoroughness, evaluating their expressions and sentences much more deeply, rather then just glance through on their surface
    - think twice before answering and try to figure out how such answer might be percieved
    - try to do less posts, but with higher quality
    - try to employ more politeness and correct behaviour
    - approach the matter with more humble and curious attitude rather then with a "I-know-everyting-better" standpoint
    With regards
    Lukas Plachy
    Misstypes corrected by rheingold.

  • Converting byte[] to Class without using defineClass() in ClassLoader

    so as to de-serialize objects that do not have their class definitions loaded yet, i am over-riding resolveClass() in ObjectInputStream .
    within resolveClass() i invoke findClass() on a network-based ClassLoader i created .
    within findClass() , i invoke
    Class remoteClass = defineClass(className, classImage, 0, classImage.length);
    and that is where i transform a byte[] into a Class , and then finally return a value for the resolveClass() method.
    this seems like a lengthy process. i mean, within resolveClass() i can grab the correct byte[] over the network.
    then, if i could only convert this byte[] to a Class within resolveClass() , i would never need to extended ClassLoader and over-ride findClass() .
    i assume that the only way to convert a byte[] to a Class is using defineClass() which is hidden deep within ClassLoader ? there is something going on under the hood i am sure. otherwise, why not a method to directly convert byte[] to a Class ? the byte[] representation of a Class always starts with hex CAFEBABE, and then i'm sure there is a standard way to structure the byte[] .
    my core issue is:
    i am sending objects over an ObjectInputStream created from a Socket .
    at the minimum, i can see that resolveClass() within ObjectInputStream must be invoked at least once .
    but then after that, since the relevant classes for de-serialization have been gotten over the network, i don't want to cascade all the way down to where i must invoke:
    Class remoteClass = defineClass(className, classImage, 0, classImage.length);
    again. so, right now, within resolveClass() i am using a Map<String, Class> to create the following class cache:
    cache.put(objectStreamClass.getName(), Class);
    once loaded, a class should stay loaded (even if its loaded in the run-time), i think? but this is not working. each de-serialization cascades down to defineClass() .
    so, i want to short-circuit the need to get the class within the resolveClass() method (ie. invoke defineClass() only once),
    but using a Map<String, Class> cache looks really stupid and certainly a hack.
    that is the best i can do to explain my issue. if you read this far, thanks.

    ok. stupid question:
    for me to use URLClassLoader , i am going to need to write a bare-bones HTTP server to handle the class requests, right?Wrong. You have to deploy one, but what's wrong with Apache for example? It's free, for a start.
    and, i should easily be able to do this using the com.sun.net.httpserver library, right?Why would you bother when free working HTTP servers are already available?

  • Problem accessing servlet from java class which uses Basic Authentication

    "Hi,
    I am using weblogic 6.1 server. I am calling a servlet file from a class file using HttpURLConnection. This is the code below.
              String theUsername="B1A1Z1T2";
              String thePassword="hlladmin";
              String urlString="http://rsnetserver:113/hll/servlet/CallSSRUpload";
              String userPassword = theUsername ":" thePassword;
              String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());
              try
                   URL url = new URL (urlString);
                   HttpURLConnection uc=(HttpURLConnection)url.openConnection();
                   int it = 0;
                   while ((it = encoding.indexOf('\n')) != -1
                        || (it = encoding.indexOf('\r')) != -1) {
                             encoding = encoding.substring(0, it)
                             encoding.substring(it 1);
                   uc.setRequestProperty("Authorization","BASIC " encoding);
                   uc.setRequestProperty("SOAPAction", url.toString());
                   System.out.println(uc.getResponseCode());
                   System.out.println(uc.getResponseMessage());
              catch(Exception io)
                   io.printStackTrace();
                   System.out.println("error message........" io.getMessage());     
    In web.xml I have d

    Hello,
    Could you post the stack trace?
    Thanks,
    Bruce
    Vijay Babu wrote:
    >
    "Hi,
    I am using weblogic 6.1 server. I am calling a servlet file from a class file using HttpURLConnection. This is the code below.
    String theUsername="B1A1Z1T2";
    String thePassword="hlladmin";
    String urlString="http://rsnetserver:113/hll/servlet/CallSSRUpload";
    String userPassword = theUsername ":" thePassword;
    String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());
    try
    URL url = new URL (urlString);
    HttpURLConnection uc=(HttpURLConnection)url.openConnection();
    int it = 0;
    while ((it = encoding.indexOf('\n')) != -1
    || (it = encoding.indexOf('\r')) != -1) {
    encoding = encoding.substring(0, it)
    encoding.substring(it 1);
    uc.setRequestProperty("Authorization","BASIC " encoding);
    uc.setRequestProperty("SOAPAction", url.toString());
    System.out.println(uc.getResponseCode());
    System.out.println(uc.getResponseMessage());
    catch(Exception io)
    io.printStackTrace();
    System.out.println("error message........" io.getMessage());
    In web.xml I have d

  • How to create an object of our own class by using Class.forName()??

    how to create an object of our own class by using Class.forName()??
    plzz anser my qustion soon..

    Class.forName does not create an object. It returns a reference to the Class object that describes the metadata for the class in question--what methods and fields it has, etc.
    To create an object--regardless of whether it's your class or some other class--you could call newInstance on the Class object returned from Class.forName, BUT only if that class has a no-arg constructor that you want to call.
    Class<MyClass> clazz = Class.forName("com.mycompany.MyClass");
    MyClass mine = clazz.newInstance();If you want to use a constructor that takes parameters, you'll have to use java.lang.reflect.Constructor.
    Google for java reflection tutorial for more details.
    BUT reflection is often abused, and often employe when not needed. Why is it that you think you need this?

  • Which function module or class is used to import UNICODE files

    Hello all,
    Does anyone know which function module or global class is used to import files when the UNICODE check for the FILE port is ON?
    Thanks
    Ed Baker

    Hi,
    According to your requirement, you can prepare report through S_PH0_48000513 - Ad Hoc Query , you can get percentage from IT0007 in Ad Hoc query. first decide how many fields you want and then choose in selection criteria and generate the report.
    Thanks,
    Nirali P.

  • Using Clipboard content in script

    file:///C:/Documents%20and%20Settings/uSER/Desktop/clipboard%20forum.indd
    Hi friends,
    While i am using "find & change or GREP clipboard content" it automated lot of things in Indesign file. But i dont know how can i used in the script. We are using Grep option in the indesign file, the same thing we are used in the script also. But I am using Clipboard content lot in the Indesin file. But i dont know how can i implement that. Please give solution to me. I have attached my file. Please go through it and give feedback to me.
    Regards
    Lara

    Hi,
    First of all your attachment is not in valid state.
    Thanks
    ashok

  • Is it possible to handle formatted text actions(RTF) using Clipboard?

    Hi All,
    Is it possible to handle formatted text actions(RTF) using Clipboard?
    My application requires to copy the contents from other applications like MS-Word and contents to be pasted in my Application..
    if so how?i appreciate for any piece of code or links to the same.
    Thanks and regds
    Mohan

    -Any Suggestions?

  • How many classes are used in java versions?...

    sun microsystems have released many java version...
    how many build in classes are used java version 1.2 ,1.3 etc ...

    Arun02006 wrote:
    sun microsystems have released many java version...
    how many build in classes are used java version 1.2 ,1.3 etc ...No idea why you should want to know... Anyway, download them and look inside the zip file that holds the source codes.
    You can download older Java versions here: [http://java.sun.com/products/archive/]

Maybe you are looking for