JApplet не запускается на HTML-странице - PullRequest
1 голос
/ 20 июля 2011

Я создал JApplet, используя библиотеку JUNG в Netbeans, которая компилируется и работает нормально.Однако, когда я пытаюсь создать HTML-файл, который запускает апплет, появляется только серая панель, но компоненты отсутствуют.Мой класс:

   public class View extends JApplet {

   //Here I declare the buttons etc..

   public View()
{
    initializeComponent();
            fetchGraphs();

}


   public static void main(String[] args) throws IOException{

    f = new JFrame();
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    x = screenSize.width;
    y = screenSize.height;


    f.getContentPane().add(new View());
    f.setTitle("Social Network Privacy Settings and Access Control");
    f.setLocation(new Point(15, 20));
    f.setSize(new Dimension(x-20,y-50));
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setResizable(false);

    f.setVisible(true);
}  
}

Метод initializeComponent () добавляет все компоненты в главное окно.Я использовал JFrameBuilder для создания некоторых основных компонентов.JFrameBuilder использует метод addComponent (контейнер, компонент, x, y, ширина, высота) для добавления компонентов

Я использую приведенный ниже код для этого:

  contentPane = (JPanel)this.getContentPane();

  //to create the japplet contentpane

  addComponent(contentPane, genGraphButton, (int)(0.35*x),(int)(0.63*y),       
  (int)(0.2*x),28);

  // to add components

Затем я создаю HTML-файл:

    <applet code = 'MyPackage.View' 
    archive = 'MyProject.jar',
    width = 1600, 
    height = 800/>

в папке / dist, но при попытке открыть ее с помощью Mozilla Firefox появляется только серая панель.Странно то, что я создал еще один простой апплет, на этот раз с NetBeans JBuilder, и он нормально работает на веб-странице.

Мне действительно нужна помощь!

Ответы [ 4 ]

1 голос
/ 20 июля 2011

Вы упомянули библиотеку JUNG, она опирается на две сторонние библиотеки, Collections-Generic & Cern Colt Scientific Library 1.2.0.Как уже упоминалось @othman, их необходимо добавить в путь к классу времени выполнения апплета (добавляется в атрибут archive элемента applet).

Но для ясности убедитесь, что HTML содержит больше, чем просто элемент applet.Примерно так:

<html>
<body>
<applet 
    code='MyPackage.View' 
    archive='MyProject.jar,jung.jar,collections.jar,colt-scientific.jar'
    alt='Java is DISABLED in this browser!'
    width='1600'
    height='800'>
This browser does not recognize the applet element! 
</applet>
</body>
</html>

Конечно, вам нужно поменять имена последних 3 банок на их настоящие имена.

0 голосов
/ 20 июля 2011

вам нужно сослаться также на баночки JUG в теге апплета:

<</p>

applet code = 'MyPackage.View' 

archive = 'MyProject.jar , jung_xx.jar',

width = 1600, 

height = 800 /
>

в атрибуте архива добавьте все jung-файлы, которые есть у вас в пути к классам проекта netbeans.

0 голосов
/ 20 июля 2011

Во-первых, я не уверен, что новые строки, добавленные вами в html, являются законными. Я имею в виду написать <applet и /> без каких-либо новых строк и пробелов.

Во-вторых, проверьте, что ваша банка действительно доступна. Для этого перейдите по тому же URL-адресу, по которому вы идете, чтобы получить ваш HTML без HTML, но с jar, т.е.

если ваш URL-адрес HTML: http://somehost/my.html, введите в браузере http://somehost/MyProject.jar и убедитесь, что вы можете скачать банку

если это работает, проверьте атрибут code. Ваше имя пакета действительно MyPackage? Капитализированное? Знаете ли вы, что это не соответствует соглашению об именах?

Также проверьте консоль Java. Найдите это где-нибудь в меню вашего браузера: это зависит от браузера. Я полагаю, что вы увидите причину в виде трассировки стека исключений.

0 голосов
/ 20 июля 2011

Я не эксперт по апплетам, так как я не использую их, но IIRC вам нужен метод init() для инициализации вашего представления.main(...) не вызывается для апплета.

...