Изменить Java-апплет на Java-приложение - PullRequest
0 голосов
/ 31 июля 2011

У меня есть апплет, который запускает графический интерфейс. Я хочу вызвать этот графический интерфейс из другой моей программы. Я знаю, что мне нужно превратить этот апплет в приложение. У меня есть init () и actionPerformed (ActionEvent ae). Как я могу это сделать?

Мой код:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class survey extends Applet implements ActionListener
{
    private TextField question;
    private Button enter, start;
    int count = 0;
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    String text, input;

    private Label intro1, intro2, intro3;
    private Label qone1, qone2, qone3, qone4, qone5, qone6, qone7, qone8, qone9, qone10, qone11, qone12;
    private Label qtwo1, qtwo2, qtwo3, qtwo4, qtwo5, qtwo6, qtwo7, qtwo8, qtwo9, qtwo10, qtwo11, qtwo12;
    private Label qthree1, qthree2, qthree3, qthree4, qthree5, qthree6, qthree7, qthree8, qthree9, qthree10, qthree11, qthree12;
    private Label qfour1, qfour2, qfour3, qfour4, qfour5, qfour6, qfour7, qfour8, qfour9, qfour10, qfour11, qfour12;
    private Label qfive1, qfive2, qfive3, qfive4, qfive5, qfive6, qfive7, qfive8, qfive9, qfive10, qfive11, qfive12;
    private Label qsix1, qsix2, qsix3, qsix4, qsix5, qsix6, qsix7, qsix8, qsix9, qsix10, qsix11, qsix12;
    private Label qseven1, qseven2, qseven3, qseven4, qseven5, qseven6, qseven7, qseven8, qseven9, qseven10, qseven11, qseven12;
    private Label qeight1, qeight2, qeight3, qeight4, qeight5, qeight6, qeight7, qeight8, qeight9, qeight10, qeight11, qeight12;
    private Label qnine1, qnine2, qnine3, qnine4, qnine5, qnine6, qnine7, qnine8, qnine9, qnine10, qnine11, qnine12;
    private Label qten1, qten2, qten3, qten4, qten5, qten6, qten7, qten8, qten9, qten10, qten11, qten12;
    private Label qeleven1, qeleven2, qeleven3, qeleven4, qeleven5, qeleven6,
    private Label finish1, finish2, finish3;


    public void init()
    {
        setLayout(null);
        start = new Button ("Start");
        question = new TextField(10);
        enter = new Button ("Enter");
        if (count == 0)
        {
            setBackground( Color.yellow);
            intro1 = new Label("Target Advertising", Label.CENTER);
            intro1.setFont(new Font("Times-Roman", Font.BOLD, 16));
            intro2 = new Label("Welcome to this questionnaire. First, we would like to know more about your personal preferences.");
            intro3 = new Label("For each question, Input a rating between 0-9 (zero = least interested, 9 = most interested) in the text box. Click enter for next question.");

            add(intro1);
            add(intro2);
            add(intro3);
            intro1.setBounds(0,0,800,20);
            intro2.setBounds(15,20,800,20);
            intro3.setBounds(15,40,800,20);
            add(start);
            start.setBounds(370,60,70,23);
            start.addActionListener(this);
        }
        if(count == 1)
        {
            setBackground( Color.yellow );
            qone1 = new Label("Question 1", Label.LEFT);
            qone1.setFont(new Font("Times-Roman", Font.BOLD, 16));
            qone2 = new Label("How much do you like action movies?");
            qone3 = new Label("0");
            qone4 = new Label("1");
            qone5 = new Label("2");
            qone6 = new Label("3");
            qone7 = new Label("4");
            qone8 = new Label("5");
            qone9 = new Label("6");
            qone10 = new Label("7");
            qone11 = new Label("8");
            qone12 = new Label("9");


            add(qone1);
            add(qone2);
            add(qone3);
            add(qone4);
            add(qone5);
            add(qone6);
            add(qone7);
            add(qone8);
            add(qone9);
            add(qone10);
            add(qone11);
            add(qone12);


            qone1.setBounds(15,0,800,20);
            qone2.setBounds(15,20,800,15);
            qone3.setBounds(15,60,800,15);
            qone4.setBounds(15,80,800,15);
            qone5.setBounds(15,100,800,15);
            qone6.setBounds(15,120,800,15);
            qone7.setBounds(15,140,800,15);
            qone8.setBounds(15,160,800,15);
            qone9.setBounds(15,180,800,15);
            qone10.setBounds(15,200,800,15);
            qone11.setBounds(15,220,800,15);
            qone12.setBounds(15,240,800,15);


            add(question);
            add(enter);
            question.setBounds(15,260,70,15);
            enter.setBounds(90,260,110,23);
            question.addActionListener(this);
            enter.addActionListener(this);
        }
        if (count == 2)
        {

            qtwo1 = new Label("Question 2", Label.LEFT);
            qtwo1.setFont(new Font("Times-Roman", Font.BOLD, 16));
            qtwo2 = new Label("How much do you like Science Fiction?");
            qtwo3 = new Label("0");
            qtwo4 = new Label("1");
            qtwo5 = new Label("2");
            qtwo6 = new Label("3");
            qtwo7 = new Label("4");
            qtwo8 = new Label("5");
            qtwo9 = new Label("6");
            qtwo10 = new Label("7");
            qtwo11 = new Label("8");
            qtwo12 = new Label("9");


            add(qtwo1);
            add(qtwo2);
            add(qtwo3);
            add(qtwo4);
            add(qtwo5);
            add(qtwo6);
            add(qtwo7);
            add(qtwo8);
            add(qtwo9);
            add(qtwo10);
            add(qtwo11);
            add(qtwo12);


            qtwo1.setBounds(15,0,800,20);
            qtwo2.setBounds(15,20,800,15);
            qtwo3.setBounds(15,60,800,15);
            qtwo4.setBounds(15,80,800,15);
            qtwo5.setBounds(15,100,800,15);
            qtwo6.setBounds(15,120,800,15);
            qtwo7.setBounds(15,140,800,15);
            qtwo8.setBounds(15,160,800,15);
            qtwo9.setBounds(15,180,800,15);
            qtwo10.setBounds(15,200,800,15);
            qtwo11.setBounds(15,220,800,15);
            qtwo12.setBounds(15,240,800,15);


            add(question);
            add(enter);
            question.setBounds(15,260,70,15);
            enter.setBounds(90,260,110,23);
            question.addActionListener(this);
            enter.addActionListener(this);
        }
        if(count == 3)
        {

            qthree1 = new Label("Question 3", Label.LEFT);
            qthree1.setFont(new Font("Times-Roman", Font.BOLD, 16));
            qthree2 = new Label("How much do you like comedy?");
            qthree3 = new Label("0");
            qthree4 = new Label("1");
            qthree5 = new Label("2");
            qthree6 = new Label("3");
            qthree7 = new Label("4");
            qthree8 = new Label("5");
            qthree9 = new Label("6");
            qthree10 = new Label("7");
            qthree11 = new Label("8");
            qthree12 = new Label("9");


            add(qthree1);
            add(qthree2);
            add(qthree3);
            add(qthree4);
            add(qthree5);
            add(qthree6);
            add(qthree7);
            add(qthree8);
            add(qthree9);
            add(qthree10);
            add(qthree11);
            add(qthree12);


            qthree1.setBounds(15,0,800,20);
            qthree2.setBounds(15,20,800,15);
            qthree3.setBounds(15,60,800,15);
            qthree4.setBounds(15,80,800,15);
            qthree5.setBounds(15,100,800,15);
            qthree6.setBounds(15,120,800,15);
            qthree7.setBounds(15,140,800,15);
            qthree8.setBounds(15,160,800,15);
            qthree9.setBounds(15,180,800,15);
            qthree10.setBounds(15,200,800,15);
            qthree11.setBounds(15,220,800,15);
            qthree12.setBounds(15,240,800,15);


            add(question);
            add(enter);
            question.setBounds(15,260,70,15);
            enter.setBounds(90,260,110,23);
            question.addActionListener(this);
            enter.addActionListener(this);
        }
        if(count == 4)
        {


            qfour1 = new Label("Question 4", Label.LEFT);
            qfour1.setFont(new Font("Times-Roman", Font.BOLD, 16));
            qfour2 = new Label("How much do you like luxary cars?");
            qfour3 = new Label("0");
            qfour4 = new Label("1");
            qfour5 = new Label("2");
            qfour6 = new Label("3");
            qfour7 = new Label("4");
            qfour8 = new Label("5");
            qfour9 = new Label("6");
            qfour10 = new Label("7");
            qfour11 = new Label("8");
            qfour12 = new Label("9");


            add(qfour1);
            add(qfour2);
            add(qfour3);
            add(qfour4);
            add(qfour5);
            add(qfour6);
            add(qfour7);
            add(qfour8);
            add(qfour9);
            add(qfour10);
            add(qfour11);
            add(qfour12);


            qfour1.setBounds(15,0,800,20);
            qfour2.setBounds(15,20,800,15);
            qfour3.setBounds(15,60,800,15);
            qfour4.setBounds(15,80,800,15);
            qfour5.setBounds(15,100,800,15);
            qfour6.setBounds(15,120,800,15);
            qfour7.setBounds(15,140,800,15);
            qfour8.setBounds(15,160,800,15);
            qfour9.setBounds(15,180,800,15);
            qfour10.setBounds(15,200,800,15);
            qfour11.setBounds(15,220,800,15);
            qfour12.setBounds(15,240,800,15);


            add(question);
            add(enter);
            question.setBounds(15,260,70,15);
            enter.setBounds(90,260,110,23);

            question.addActionListener(this);
            enter.addActionListener(this);
        }
        if(count == 5)
        {


            qfive1 = new Label("Question 5", Label.LEFT);
            qfive1.setFont(new Font("Times-Roman", Font.BOLD, 16));
            qfive2 = new Label("How much do you like trucks?");
            qfive3 = new Label("0");
            qfive4 = new Label("1");
            qfive5 = new Label("2");
            qfive6 = new Label("3");
            qfive7 = new Label("4");
            qfive8 = new Label("5");
            qfive9 = new Label("6");
            qfive10 = new Label("7");
            qfive11 = new Label("8");
            qfive12 = new Label("9");


            add(qfive1);
            add(qfive2);
            add(qfive3);
            add(qfive4);
            add(qfive5);
            add(qfive6);
            add(qfive7);
            add(qfive8);
            add(qfive9);
            add(qfive10);
            add(qfive11);
            add(qfive12);


            qfive1.setBounds(15,0,800,20);
            qfive2.setBounds(15,20,800,15);
            qfive3.setBounds(15,60,800,15);
            qfive4.setBounds(15,80,800,15);
            qfive5.setBounds(15,100,800,15);
            qfive6.setBounds(15,120,800,15);
            qfive7.setBounds(15,140,800,15);
            qfive8.setBounds(15,160,800,15);
            qfive9.setBounds(15,180,800,15);
            qfive10.setBounds(15,200,800,15);
            qfive11.setBounds(15,220,800,15);
            qfive12.setBounds(15,240,800,15);


            add(question);
            add(enter);
            question.setBounds(15,260,70,15);
            enter.setBounds(90,260,110,23);


            question.addActionListener(this);
            enter.addActionListener(this);
        }







        if(count == 7)
        {

            finish1 = new Label("Thank You." , Label.CENTER);
            finish1.setFont(new Font("Times-Roman", Font.BOLD, 50));
            finish2 = new Label("Questionnaire Completed.", Label.CENTER);
            finish2.setFont(new Font("Times-Roman", Font.BOLD, 50));

            add(finish1);
            add(finish2);

            finish1.setBounds(0,200,800,60);
            finish2.setBounds(0,300,800,60);
        }
    }
    public void actionPerformed(ActionEvent ae)
    {
        String button = ae.getActionCommand();
        text = question.getText();
        b = 0;
        c = 0;






        if (count == 6)
        {
            input = text.toUpperCase();
            remove(enter);
            remove(question);
            question.setText("");
            remove(qsix1);
            remove(qsix2);
            remove(qsix3);
            remove(qsix4);
            remove(qsix5);
            remove(qsix6);
            remove(qsix7);
            remove(qsix8);
            remove(qsix9);
            remove(qsix10);
            remove(qsix11);
            remove(qsix12);

            try{
                  FileWriter fstream = new FileWriter("lets3.txt",true);
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write(new String(input));
                  out.write("\n");
                  out.close();
                  }

              catch (Exception e){
                      System.err.println("Error: " + e.getMessage());
                  }
            if(input.equals("OL"))
            {
                b = 1;
                count = 7;
                init();
            }
            else
            {
                b = 2;
                count = 7;
                init();
            }

        }
        if (count == 5)
        {

            input = text.toUpperCase();
            remove(enter);
            remove(question);
            question.setText("");
            remove(qfive1);
            remove(qfive2);
            remove(qfive3);
            remove(qfive4);
            remove(qfive5);
            remove(qfive6);
            remove(qfive7);
            remove(qfive8);
            remove(qfive9);
            remove(qfive10);
            remove(qfive11);
            remove(qfive12);

            try{
                  FileWriter fstream = new FileWriter("lets3.txt",true);
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write(new String(input));
                  out.write("\n");
                  out.close();
                  }

              catch (Exception e){
                      System.err.println("Error: " + e.getMessage());
                  }
            if(input.equals("BR"))
            {
                b = 1;
                count = 6;
                init();
            }
            else
            {
                b = 2;
                count = 6;
                init();
            }

        }
        if (count == 4)
        {
            input = text.toLowerCase();
            remove(enter);
            remove(question);
            question.setText("");
            remove(qfour1);
            remove(qfour2);
            remove(qfour3);
            remove(qfour4);
            remove(qfour5);
            remove(qfour6);
            remove(qfour7);
            remove(qfour8);
            remove(qfour9);
            remove(qfour10);
            remove(qfour11);
            remove(qfour12);

            try{
                  FileWriter fstream = new FileWriter("lets3.txt",true);
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write(new String(input));
                  out.write("\n");
                  out.close();
                  }

              catch (Exception e){
                      System.err.println("Error: " + e.getMessage());
                  }
            if(input.equals("no"))
            {
                b = 1;
                count = 5;
                init();
            }
            else
            {
                b = 2;
                count = 5;
                init();
            }

        }
        if (count == 3)
        {
            input = text.toLowerCase();
            remove(enter);
            remove(question);
            question.setText("");
            remove(qthree1);
            remove(qthree2);
            remove(qthree3);
            remove(qthree4);
            remove(qthree5);
            remove(qthree6);
            remove(qthree7);
            remove(qthree8);
            remove(qthree9);
            remove(qthree10);
            remove(qthree11);
            remove(qthree12);

            try{
                  FileWriter fstream = new FileWriter("lets3.txt",true);
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write(new String(input));
                  out.write("\n");
                  out.close();
                  }

              catch (Exception e){
                      System.err.println("Error: " + e.getMessage());
                  }
            if(input.equals("black"))
            {
                b = 1;
                count = 4;
                init();
            }
            else
            {
                b = 2;
                count = 4;
                init();
            }

        }
        if (count == 2)
        {
            input = text.toLowerCase();
            remove(enter);
            remove(question);
            question.setText("");
            remove(qtwo1);
            remove(qtwo2);
            remove(qtwo3);
            remove(qtwo4);
            remove(qtwo5);
            remove(qtwo6);
            remove(qtwo7);
            remove(qtwo8);
            remove(qtwo9);
            remove(qtwo10);
            remove(qtwo11);
            remove(qtwo12);

            try{
                  FileWriter fstream = new FileWriter("lets3.txt",true);
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write(new String(input));
                  out.write("\n");
                  out.close();
                  }

              catch (Exception e){
                      System.err.println("Error: " + e.getMessage());
                  }
            if(input.equals("yes"))
            {
                b = 1;
                count = 3;
                init();
            }
            else
            {
                b = 2;
                count = 3;
                init();
            }
        }
        if (count == 1)
        {
            input = text.toUpperCase();
            remove(enter);
            remove(question);
            question.setText("");
            remove(qone1);
            remove(qone2);
            remove(qone3);
            remove(qone4);
            remove(qone5);
            remove(qone6);
            remove(qone7);
            remove(qone8);
            remove(qone9);
            remove(qone10);
            remove(qone11);
            remove(qone12);



            try{
              FileWriter fstream = new FileWriter("lets3.txt",true);
              BufferedWriter out = new BufferedWriter(fstream);
              out.write(new String(input));
              out.write("\n");
              out.close();
              }

          catch (Exception e){
                  System.err.println("Error: " + e.getMessage());
              }

            if(input.equals("i"))
            {
                b = 1;
                count = 2;
                init();
            }
            else 
            {
                b = 1;
                count = 2;
                init();
            }
        }
        if (count == 0)
        {
            remove(intro1);
            remove(intro2);
            remove(intro3);
            remove(start);
            count = 1;
            init();
        }
        this.validate();
    }
}             

Ответы [ 5 ]

3 голосов
/ 31 июля 2011

Честно говоря, вам нужно переписать вашу программу с нуля, чтобы вы могли включить методы ООП, массивы, коллекции и другие преимущества, которые может предложить Java.Я рекомендую:

  • Прежде всего, поскольку ваш код отображает ряд вопросов и подсказок для ответа, не кодируйте вопросы в коде жестко, а сделайте их частью данных.Пусть ваша программа будет прочитана в текстовом файле с вопросами.Это позволит вам изменять вопросы или добавлять вопросы без изменения кода.
  • Создайте класс вопросов, не относящийся к GUI, который содержит вопросы и ответы пользователей и который используется GUI в качестве «модели».
  • Создание объектов ArrayList of Question.
  • Для вашего графического интерфейса используйте код для JPanel, а не для апплета или JFrame.Это даст вам возможность использовать ваш графический интерфейс в JFrame, JApplet или даже в JDialog или встроить в другой JPanel, если вы того пожелаете.
  • Если вам нужно поменять местами панели отображения, рассмотрите возможность использования CardLayout дляс этой целью.
  • Если, однако, все, что вы будете делать, это изменить текст вопроса, то отобразите текст вопроса в JLabel, а когда вы захотите его изменить, вызовите setText (...) дляJLabel передает текст нового вопроса.
  • Используйте удобные менеджеры компоновки, чтобы упростить вашу работу по разметке компонентов в графическом интерфейсе.
  • В вашем текущем коде много ненужных избыточностей.Использование массивов и коллекций, таких как ArrayLists, удалит многие из этих избыточностей и упростит отладку и обновление значительно .
  • Как уже говорили другие и как я уже говорил в моем предыдущем комментарии, вам следует переместитьсявплоть до библиотеки Swing, поскольку она гораздо более гибкая и надежная, чем библиотека графического интерфейса AWT, которую вы используете в настоящее время.Учебники по Swing покажут вам, что вам нужно знать для создания красивых программ Swing.
2 голосов
/ 31 июля 2011

Просто добавьте метод main (), создайте фрейм для вашего апплета, добавьте апплет в фрейм и вызовите методы апплета init () и start ().См. Мой Mandelbrot.java для примера: http://unixshell.jcomeau.com/src/java/com/jcomeau/Mandelbrot.java

Одним из преимуществ этого подхода является то, что он может использоваться с любым существующим апплетом, чтобы позволить ему функционировать как апплет или приложение.Используйте JFrame, если вы используете компоненты Swing, в противном случае он должен работать почти одинаково.

0 голосов
/ 12 ноября 2018

https://way2java.com/applets/applet-to-application/

Ниже приведены изменения, которые необходимо внести из апплета в приложение

  1. Удалить инструкцию "import java.applet" package
  2. Заменить расширяет апплет с рамкой
  3. Заменить метод init () конструктором
  4. Проверьте макет (для апплета по умолчанию используется FlowLayout, а для фрейма - BorderLayout)
  5. Добавить методы setXXX (), такие как setSize () и т. Д.
  6. Добавить метод main ()
  7. HTML не требуется (удалите его)
0 голосов
/ 31 июля 2011

Я не уверен, что вы спрашиваете, но если вы хотите, чтобы это было внутри окна, все, что вам нужно сделать, это:

    public Object[] startNewSurvey()
    {
        java.awt.Frame f = new java.awt.Frame("You're title here.");
        f.setSize(new Dimension(<Width>, <Height>));
        f.setResizable(false);

        survey s = new survey();
        s.init();
        f.add(s);

        f.setVisible(true);
        return new Object[] { f, s };
    }

Это просто создаст новый кадр и добавит еще один новыйэкземпляр вашего класса опроса в этом кадре, а затем отобразите его.Он также возвращает массив Object [] размером 2, содержащий новые кадры и сделанные опросы.Надеюсь, это поможет.

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

В общем, вам нужно заменить все не качающиеся компоненты на качающиеся.Для событий они примерно одинаковы как для апплетов, так и для приложений Swing.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...