-
swing applet programming HELP!!!
Hey,
I am having a NIGHTMARE of a time trying to write a simple applet client for ftp over SSH. I thought it was going to be the networking syntax that was going to give me trouble. Turns out its the gui that I am getting most gyp with.
The part that I am most stuck with is trying to create a box that displays the local file system and a box that contains the server file system. I looked at using a JFilechooser but it turned out that wouldnt do what I wanted so I thought, I know I will use a JTree. That looked like the perfect solution but then I couldnt get it to work accessing the file system.
Now, It would be a school boy error to overlook the fact that an applet cannot access a files or clipboard on a machine unless it is trusted. SO I created a certificate for permission and a JAR file to allow it permission to access the system, but now my main applet cannot access any of the external classes that I have written. Let me elaborate on the situation so far:
I have:
Sting.java
Sting.class
Description: This is the main Applet code
----------------------------
guiLayout.java
guiLayout.class
Description: This is the swing portion of the applet. I put it in a separate class so that It would keep to some form of OOP.
---------------------------
StingAuth - Certificate
Sting.Jar - JAR file
Sting.Bat - Batch file for compiling the JAR.
Here is the code from Sting.java:
Code:
/*
***********************************
Sting SFtp
Creator: Stephen Cheesley
Designer: Stephen Cheesley
***********************************
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JFileChooser.*;
import javax.swing.filechooser.*;
import java.applet.*;
public class Sting extends JApplet //implements ActionListener
{
private Component me;
public void init()
{
try
{
javax.swing.SwingUtilities.invokeAndWait(new Runnable()
{
public void run()
{
guiLayout steve = new guiLayout();
getContentPane().add(steve);
}
});
}
catch (Exception e)
{
System.err.println("ActionEvent e FOULED UP");
}
}
public void start()
{
}
public void stop()
{
}
}
Here is the code for guiLayout.java
Code:
/*
***********************************
Sting SFtp
guiLayout.class is a package belonging to
Sting SFtp. It is responsible for the look
and feel of the software.
Creator: Stephen Cheesley
Designer: Stephen Cheesley
***********************************
*/
import java.io.*;
import java.io.File;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JFileChooser.*;
import java.applet.*;
import java.util.*;
import java.lang.*;
public class guiLayout extends JApplet implements ActionListener
{
public guiLayout()
{
//Where the variables are created:
JMenuBar menuBar;
JMenu file, help;
JMenuItem menuItem;
final JPanel welcome, files_local, files_server;
JLabel Wlabel, Llabel, Slabel, about1;
JButton testButton;
// *****************************************************
// *****************************************************
// ------------------------------------------------
//| MenuBar Setup |
// ------------------------------------------------
//Create the menu bar.
menuBar = new JMenuBar();
//Create file menu.
file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_A);
file.getAccessibleContext().setAccessibleDescription(
"The only menu in this program that has menu items");
menuBar.add(file);
//Add Items to the file menu
menuItem = new JMenuItem("Cut");
file.add(menuItem);
menuItem = new JMenuItem("Copy");
file.add(menuItem);
menuItem = new JMenuItem("Paste");
file.add(menuItem);
file.addSeparator();
menuItem = new JMenuItem("Logout");
file.add(menuItem);
//Create help menu
help = new JMenu("Help");
menuBar.add(help);
//Add Items to the help menu
menuItem = new JMenuItem("Readme");
help.add(menuItem);
// help.addSeparator(); --- Separator
menuItem = new JMenuItem("About Sting...");
help.add(menuItem);
menuItem.addActionListener(this);
menuItem.setActionCommand("about");
//Add the menu bar to the GUI
setJMenuBar(menuBar);
// *****************************************************
// *****************************************************
// ------------------------------------------------
//| Panel Layout |
// ------------------------------------------------
// This section sets the three main layout panels in
// positions top left and right.
// The top "Welcome" panel
welcome = new JPanel();
welcome.setBackground(Color.white);
getContentPane().add(welcome, BorderLayout.PAGE_START);
Wlabel = new JLabel("Welcome <user> ...");
welcome.add("West",Wlabel);
testButton = new JButton("Test");
welcome.add(testButton);
// The left panel for local file handler
files_local = new JPanel();
files_local.setBackground(Color.red);
getContentPane().add(files_local, BorderLayout.LINE_START);
Llabel = new JLabel("Local Files ");
files_local.add(Llabel);
//The right panel for server file Handler
files_server = new JPanel();
files_server.setBackground(Color.blue);
getContentPane().add(files_server, BorderLayout.LINE_END);
Slabel = new JLabel("Server Files ");
files_server.add(Slabel);
// -------------------------------------------------
testButton.addActionListener(this);
testButton.setActionCommand("test");
// *****************************************************
// -----------------------------------------------------
// Create JTree
// -----------------------------------------------------
}
/*
JTree dirTree = null;
public void FileTree()
{
//initComponents();
File dir = new File("C:/j2me");
dirTree = new JTree(dir.listFiles());
dirTree.setPreferredSize(new Dimension(200, 400));
files_local.add(dirTree);
//this.setSize(350,450);
}*/
// ******************************************************************************
// -------------------------------------------------------------------
//
//
public void actionPerformed(ActionEvent e)
{
String s = e.getActionCommand();
if(s==("about"))
{
JLabel about1, about2, about3, title;
JPanel about;
about1 = new JLabel("Sting SFTP...");
about2 = new JLabel("Written By: Stephen Cheesley");
about3 = new JLabel("Developed: 26/06/2006");
about = new JPanel();
about.setLayout(new BorderLayout());
about.add("North", about1);
about.add("Center",about2);
about.add("South",about3);
JOptionPane.showMessageDialog(getContentPane(),about,"Sting SFTP",JOptionPane.PLAIN_MESSAGE);
}
else if(s==("test"))
{
/*
final JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION)
{
File file = chooser.getSelectedFile();
//if (file!=null)
//{}// do something with file
}*/
}
}
}
I hope someone can help as this has become really frustrating.
Many thanks,
Steve
-
Will giving the applet access to the file structure of the client also give it permission to execute code which resides there? I don't think so. The applet must contain everything it needs to execute in its sandbox - have you tried to put these external classes on the "server" (source of the applet)?
-
How do you mean "on the source"???
Do you mean actually in the applet???
-
If the external classes are available in the applet's source directory (on the server which is the home of the applet) the applet should be able to access their functionality.
Similar Threads
-
Replies: 3
Last Post: 03-27-2008, 06:56 AM
-
Replies: 2
Last Post: 02-24-2006, 11:01 PM
-
By Charlie Flynn in forum Java
Replies: 3
Last Post: 08-23-2001, 11:01 AM
-
Replies: 0
Last Post: 02-09-2001, 05:27 PM
-
By Satish Pamidimarthi in forum Java
Replies: 2
Last Post: 08-22-2000, 06:00 AM
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Development Centers
-- Android Development Center
-- Cloud Development Project Center
-- HTML5 Development Center
-- Windows Mobile Development Center
|