开发者

Paint applet - problems loading/saving images [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. Closed 11 years ago.
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import java.lang.Math.*;
import java.text.*;
import java.io.*;
import java.awt.Scrollbar.*;
import javax.swing.*;
import java.awt.datatransfer.*;

public class DFunPaint extends JApplet implements ActionListener, AdjustmentListener, MouseListener, MouseMotionListener
{
    String filename;
    JTextArea tx = new JTextArea();
    JMenuBar mb =new JMenuBar();
    JMenu f = new JMenu("File");
    JMenuItem n = new JMenuItem("New");
    JMenuItem o = new JMenuItem("Open");
    JMenuItem s =开发者_StackOverflow new JMenuItem("Save");
    JMenuItem e = new JMenuItem("Exit");
    JMenu ed = new JMenu("Edit");
    JMenuItem cut = new JMenuItem("Cut");
    JMenuItem copy = new JMenuItem("Copy");
    JMenuItem paste = new JMenuItem("Paste");
    JMenu format = new JMenu("Format");
    JMenuItem  Word = new JMenuItem("Word Wrap");
    JMenuItem  Font = new JMenuItem("Font");
    JMenu view = new JMenu("View");
    JMenuItem  StatusBar= new JMenuItem("StatusBar");
    JMenu help = new JMenu("Help");
    JMenuItem  About = new JMenuItem("About");
    JMenuItem Topics = new JMenuItem("Topics");

    private JPanel p1 = new JPanel(new BorderLayout());

    public void init(){
        setLayout(new BorderLayout());
        f.add(n);
        f.add(o);
        f.add(s);
        f.add(e);
        mb.add(f);
        ed.add(cut);
        ed.add(copy);
        ed.add(paste);
        mb.add(ed);
        format.add(Word);
        format.add(Font);
        mb.add(format);
        mb.add(view);
        view.add(StatusBar);
        mb.add(help);
        help.add(About);
        JMenuItem Topics = new JMenuItem("Topics");
        help.add(Topics);

        p1.add(mb);

        add(p1,"North");

        n.addActionListener(this);
        o.addActionListener(this);
        s.addActionListener(this);
        e.addActionListener(this);
        cut.addActionListener(this);
        copy.addActionListener(this);
        paste.addActionListener(this);
        About.addActionListener(this);
        Topics.addActionListener(this);
    }

    public void ActionPerformed(ActionEvent e)
    {
        if (e.getSource() == n)
            tx.setText(" ");
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == o)
            JFileDialog fd = new JFileDialog( DFunPaint, "select File",JFileDialog.LOAD);
        fd.show();
        if (fd.getFile()!=null)
        {
            filename = fd.getDirectory() + fd.getFile();
            setTitle(filename);
            ReadFile();
        }
        tx.requestFocus();
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == s)
            FileDialog fd = new FileDialog(DFunPaint,"Save File",FileDialog.SAVE);
        fd.show();
        if (fd.getFile()!=null)
        {
            filename = fd.getDirectory() + fd.getFile();
            setTitle(filename);
            try
            {
                DataOutputStream d = new DataOutputStream(new FileOutputStream(filename));
                String line = tx.getText();
                BufferedReader br = new BufferedReader(new StringReader(line));
                while((line = br.readLine())!=null)
                {
                    d.writeBytes(line + "\r\n");
                    d.close();
                }
            }
            catch(Exception ex)
            {
                System.out.println("File not found");
            }
            tx.requestFocus();
        }
    }

    public void ctionPerformed(ActionEvent ae)
    {
        if (ae.getSource() == e)
            System.exit(0);
    }

    public void ActionPerformed(ActionEvent e)
    {
        if (e.getSource() == cut)
            String sel =
        StringSelection ss = new StringSelection(tx.getSelectedText());
        clip.setContents(ss,ss);
        tx.replaceRange(" ",tx.getSelectionStart(),tx.getSelectionEnd());
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == copy)
            String sel = tx.getSelectedText();
            StringSelection clipString = new StringSelection(sel);
            clip.setContents(clipString, clipString);
        }

    public void ActionPerformed(ActionEvent e)
    {
        if (e.getSource() == paste)
            Transferable cliptran = clip.getContents();

        try
        {
            String sel = (String) cliptran.getTransferData(DataFlavor.stringFlavor);
            tx.replaceRange(sel,tx.getSelectionStart(),tx.getSelectionEnd());
        }
        catch(Exception exc)
        {
            System.out.println("not string flavour");
        }
    }


Applets are deployed in a security sand-box by default. To access the local file-system there are basically 2 options:

  1. Digitally sign the code and get the user to OK the trust dialog when prompted. If an applet is 'trusted', it can do most the things an application can do. Certainly load and save files using a JFileChooser. Here is an example of a trusted applet using a self signed certificate. The demo applet can browse the local file system and open files in the JEditorPane.
  2. More recent Sun/Oracle JREs are Plug-In2 'next generation' architecture. They allow embedded applets to access the services of the JNLP API (supplied for Java Web Start). Using the JNLP API file services, it is possible for a sand-boxed applet to load resources from, and save resources to, the local file system (again with user approval when prompted). Here is my demo. of the JNLP API file services.

Note that I made some wild guesses about the nature of the problem. For better advice, state exactly what the problem is.

And please, not so much code in future. ;)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜