Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Апплеты > Не отображается Japplet :(


Автор: G00dWINe 16.3.2012, 18:46
Здрасте!
Такая вот насущая проблема: не отображается апплет.
Вот его код:

Код

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.ConnectException;
import javax.swing.*;
import java.io.File;

import javax.swing.*;

//import listfiles.java;

public class ftp_gui extends JApplet implements ActionListener {
    String file2;
    Label label_1;
    TextField text_ip;
    TextField textfield_1;
    TextField textfield_2;
    Button button_4;
    Button button_5;
    TextArea fileslist;
    Button button_6;
    TextField chooser_upload;
    TextField chooser_download;
    Button button_2;
    TextArea textarea_2;
    Label label_3;
    
    private JFileChooser dialog;

    public void init() {
        ftpLayout customLayout = new ftpLayout();

        getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));
        getContentPane().setLayout(customLayout);
        
     //   setBounds(0,0,500,500);
        dialog = new JFileChooser();

        label_1 = new Label("FTP client by Egorov v 2.4");
        getContentPane().add(label_1);

        text_ip = new TextField("192.168.0.104");
        getContentPane().add(text_ip);

        textfield_1 = new TextField("test");
        getContentPane().add(textfield_1);

        textfield_2 = new TextField("123");
        getContentPane().add(textfield_2);

        button_4 = new Button("Get file's list");
        getContentPane().add(button_4);
        button_4.addActionListener(this);
        
        button_5 = new Button("Upload");
        getContentPane().add(button_5);
        button_5.addActionListener(this);

        fileslist = new TextArea("List of Files");
        getContentPane().add(fileslist);

        button_6 = new Button("Choose it");
        getContentPane().add(button_6);
        button_6.addActionListener(this);

        chooser_upload = new TextField("File for upload");
        getContentPane().add(chooser_upload);

        chooser_download = new TextField("File for download");
        getContentPane().add(chooser_download);

        button_2 = new Button("Download");
        getContentPane().add(button_2);
        button_2.addActionListener(this);
        
        textarea_2 = new TextArea("Hello, user! :)  \n");
        getContentPane().add(textarea_2);

        label_3 = new Label("Console");
        getContentPane().add(label_3);
        
        setSize(getPreferredSize());
    }

    public static void main(String args[]) {
        ftp_gui applet = new ftp_gui();
        JFrame window = new JFrame("ftp");

        window.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        applet.init();
        window.getContentPane().add("Center", applet);
        window.pack();
        window.setVisible(true);
        
        
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        // TODO Auto-generated method stub
        
         String str = ae.getActionCommand();
     String IP, log, pw, fnamed;
         if (str.equals("Get file's list")) {
             IP = text_ip.getText();
             log = textfield_1.getText();
             pw = textfield_2.getText();
             String[] RESULT = listfiles.GetList(IP,log,pw,"");
             textarea_2.append(listfiles.zzz + "\n");
             //textarea_2.setText("\n");
             fileslist.setText("List of Files: \n \n");
             for (int i=0;i<RESULT.length;i++)
             {
                 fileslist.append("File = " + RESULT[i]);
                 fileslist.append("\n");
             }
         }
         if (str.equals("Download")) {
             IP = text_ip.getText();
             log = textfield_1.getText();
             pw = textfield_2.getText();
             fnamed = chooser_download.getText();
             System.out.println(fnamed);
             //System.out.println(123);
             
                    try {
                        download.downloadfile (IP, log, pw, fnamed);
                        textarea_2.append(download.zzz + "\n");
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        System.out.println("Wrong IP");
                    }
         }
         
         if (str.equals("Upload")) {
             IP = text_ip.getText();
             log = textfield_1.getText();
             pw = textfield_2.getText();
             fnamed = chooser_upload.getText();
             System.out.println(fnamed);
             //System.out.println(123);
             
                    try {
                        upload.UploadFileOnFtp(IP, log, pw, file2, fnamed);
                        textarea_2.append(upload.zzz + "\n");
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
         }
         
         if (str.equals("Choose it")) {
                dialog.showOpenDialog(this);
                File file =dialog.getSelectedFile();
              //  String fff = file.getAbsolutePath();
                chooser_upload.setText(file.getAbsolutePath());
                file2 = file.getName();
                setVisible(true);
           //     System.out.println(file);
           //     System.out.println(file2);
                
         }
    

         
//         if (str.equals("Upload")) {
//             System.out.println("123");
    //     }
        
    }
}

class ftpLayout implements LayoutManager {

    public ftpLayout() {
    }

    public void addLayoutComponent(String name, Component comp) {
    }

    public void removeLayoutComponent(Component comp) {
    }

    public Dimension preferredLayoutSize(Container parent) {
        Dimension dim = new Dimension(0, 0);

        Insets insets = parent.getInsets();
        dim.width = 550 + insets.left + insets.right;
        dim.height = 312 + insets.top + insets.bottom;

        return dim;
    }

    public Dimension minimumLayoutSize(Container parent) {
        Dimension dim = new Dimension(0, 0);
        return dim;
    }

    public void layoutContainer(Container parent) {
        Insets insets = parent.getInsets();

        Component c;
        c = parent.getComponent(0);
        if (c.isVisible()) {c.setBounds(insets.left+168,insets.top+8,208,24);}
        c = parent.getComponent(1);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+8,112,24);}
        c = parent.getComponent(2);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+40,112,24);}
        c = parent.getComponent(3);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+72,112,24);}
        c = parent.getComponent(4);
        if (c.isVisible()) {c.setBounds(insets.left+424,insets.top+264,72,24);}
        c = parent.getComponent(5);
        if (c.isVisible()) {c.setBounds(insets.left+104,insets.top+160,72,24);}
        c = parent.getComponent(6);
        if (c.isVisible()) {c.setBounds(insets.left+392,insets.top+56,136,200);}
        c = parent.getComponent(7);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+160,80,24);}
        c = parent.getComponent(8);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+128,192,24);}
        c = parent.getComponent(9);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+192,192,24);}
        c = parent.getComponent(10);
        if (c.isVisible()) {c.setBounds(insets.left+56,insets.top+224,72,24);}
        c = parent.getComponent(11);
        if (c.isVisible()) {c.setBounds(insets.left+224,insets.top+80,120,176);}
        c = parent.getComponent(12);
        if (c.isVisible()) {c.setBounds(insets.left+248,insets.top+48,72,24);}
    }
}


Но это код графической части, то бишь самого апплета.
Есть ещё некоторые класс-файлы, содержащие функции, которые использованы в коде, что я написал выше.

Так вот, всё для простоты закинул в default package.
Для теста добавил туды ещё один апплет (но он просто Applet!).

Так вот, создаю html файлик с кодом: 
<html><body><applet code="ftp_gui.class" width=550 height=312></applet></body></html>

И это дело отображает мне пустой белый экран =\

А вот запускаю другой апплет (который сунул для теста - дак там всё норм, всё работает =\
В чём может быть проблема?


Очень сильно жду ответа, т.к завтра надо сдавать работу.
Заранее спасибо.

Автор: G00dWINe 16.3.2012, 20:06
Непонятная вещь...
Переписал программу: сделал так, чтобы все классы были в одном файле - не помогло...

Автор: Mirkes 17.3.2012, 20:02
А что выводит в консоль? Может возникли ошибки? Подчем-нибудь работает?

Автор: G00dWINe 13.4.2012, 15:53
Щас напишу...

Добавлено через 8 минут и 8 секунд
Код

Exception in thread "AWT-EventQueue-2" java.lang.ArrayIndexOutOfBoundsException: No such child: 0
    at java.awt.Container.getComponent(Unknown Source)
    at ftp_gui.ftpLayout.layoutContainer(ftp_gui.java:214)
    at java.awt.Container.layout(Unknown Source)
    at java.awt.Container.doLayout(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validate(Unknown Source)
    at sun.plugin.util.GrayBoxPainter$2.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
java.security.AccessControlException: access denied (java.io.FilePermission C:\Users\Вячеслав\Documents read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at java.io.File.exists(Unknown Source)
    at java.io.Win32FileSystem.canonicalize(Unknown Source)
    at java.io.File.getCanonicalPath(Unknown Source)
    at sun.awt.shell.Win32ShellFolderManager2.createShellFolder(Unknown Source)
    at sun.awt.shell.Win32ShellFolderManager2.getPersonal(Unknown Source)
    at sun.awt.shell.Win32ShellFolderManager2.get(Unknown Source)
    at sun.awt.shell.ShellFolder.get(Unknown Source)
    at javax.swing.filechooser.FileSystemView.getDefaultDirectory(Unknown Source)
    at javax.swing.JFileChooser.setCurrentDirectory(Unknown Source)
    at javax.swing.JFileChooser.<init>(Unknown Source)
    at javax.swing.JFileChooser.<init>(Unknown Source)
    at ftp_gui.ftp_gui.init(ftp_gui.java:42)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.security.AccessControlException: access denied (java.io.FilePermission C:\Users\Вячеслав\Documents read)

Автор: LSD 13.4.2012, 17:32
Чтобы апплет мог читать данные с диска, его надо подписать.

Автор: cupoma58 22.8.2017, 12:37
Код

 public static void main(String[] args)
 {
  JApplet applet = new Name();
  JFrame frame = new JFrame("...");
  frame.addWindowListener(new WindowAdapter() 
  {
   public void windowClosing(WindowEvent we){System.exit(0);}
  });
  frame.add(applet);
  frame.setSize(0, 0);
  applet.init();
  applet.start(); <---------------- помоему - этого нет
  frame.setVisible(true);  
 }

дбавить апплет :
Код

<script language="Javascript">
var bros = navigator.appName;
if (bros == 'Opera') 
{document.write('<applet code="file.class"','archive="/.jar"','width="350"','height="250"','type="application/x-java-applet;version=1.7.0">');}
else if (bros == 'Netscape') 
{document.write('<embed code="file.class"','archive="/.jar"','width="350"','height="250"','type="application/x-java-applet;version=1.7.0">');}
else if (bros == 'Microsoft Internet Explorer') 
{document.write('<object ','classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"','width="350"','height="250">','<param name="code" value="file.class">','<param name="archive" value="/.jar">','</object>');}
else {document.write('<font color="cc3333">Sorry, не тот браузер.</font>');}
</script>

Апплет с чусером, без подписи (http://cupoma58.ru/java_6.html) ни один браузер не пропустит.
                                                                         smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)