#java #eclipse #applet
#java #eclipse #апплет
Вопрос:
Я написал небольшой java-апплет, который будет действовать как онлайн-форма, которая будет принимать информацию, относящуюся к заказам и т.д. … и отправлять соответствующие электронные письма в почтовые ящики компании. Моя проблема в том, что апплет загружается некорректно и что ни один из управляемых событиями кодов в программе не выполняется. (Сюда входят функции, которые заполняют списки и варианты выбора в форме). Я спросил своего коллегу, разместил ли он файл * .class на веб-сервере компании (в том же каталоге, что и выполняемый html-код), и он подтвердил, что разместил.
Я в тупике, что может быть причиной того, что апплет не загружается должным образом и что может привести к тому, что апплет не сможет запускать код, управляемый событиями? Вот апплет в сокращенной версии (он немного длинный, поэтому обратите внимание, действительно обратите ваше внимание на такие методы, как get **(), который является одним из методов, который не выполняется, он заполняет список распространителей вариантами).
package OrderSpecs;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Properties;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.swing.JTextField;
public class OrderSpecs extends JApplet implements ActionListener {
/**
* This is the OrderSpecs default constructor
*/
public OrderSpecs() {
super();
}
/**
* This method initializes this
*
* @return void
*/
public void init() {
this.setPreferredSize(new Dimension(880, 1279));
this.setSize(880, 1279);
this.setContentPane(new JScrollPane(getJContentPane()));
applicationList = new ArrayList<Application>();
Date dateNow = new Date ();
SimpleDateFormat dateformatMMDDYYYY = new SimpleDateFormat("MM/dd/yyyy");
this.dateString = new StringBuilder( dateformatMMDDYYYY.format( dateNow ) );
}
/**
* Initialize the list of industries for the drop-down list
*/
private String[] getIndustryList()
{
String[] industries =
{
" ", "Commercial Lab", "Environmental", "Food / Wine", "Government", "Marine Lab",
"Other", "Petro Chemical", "Power Generation", "Pulp amp; Paper", "University"
};
return industries;
}
Я использую Eclipse для разработки апплета, и когда я компилирую / запускаю код, он отлично отображается на моем компьютере, есть идеи? Большое спасибо,
- Майк
Комментарии:
1. Какие ошибки выдает консоль Java вашего браузера, если таковые имеются? Что насчет журнала ошибок браузера? Вы подтвердили, что страница загружает апплет? Все это поможет с ответами.
2. Похоже, что весь важный код отсутствует??
3. Страница загрузит апплет, но текстовые поля будут иметь длину 0, и ни одно из выпадающих списков, которые у меня есть в апплете, не заполнено никакими значениями, это почти так, как если бы апплет не был инициализирован, за исключением того, что все отображается, просто ничего из этого не работает.
4. Апплет в целом очень длинный, я просто хотел дать представление о его инициализации, поскольку я думаю, что это проблема, или, по крайней мере, так кажется.
Ответ №1:
но текстовые поля будут иметь длину 0
Ну, это зависит от того, как вы определяете текстовое поле. Если вы используете:
JTextField textField = new JTextField();
Тогда текстовое поле будет иметь размер, равный тексту, который в данном случае равен 0. Вы должны использовать что-то вроде следующего, чтобы задать предпочтительный размер:
JTextField textField = new JTextField(10);
и ни одно из выпадающих списков, которые у меня есть в апплете, не заполнено никакими значениями
Опять же, из опубликованного кода мы не можем определить, что вы делаете, поэтому мы не можем предложить никакой помощи.
Апплет в целом очень длинный,
Итак, вопрос в том, почему вы пишете очень длинную программу, не выполняя никакой отладки по пути? Начните с создания программы из 10 строк, которая просто создает поле со списком, добавляет данные в модель и отображает поле со списком в графическом интерфейсе. Если это работает отлично, теперь вы можете сравнить рабочий код со своей программой, чтобы увидеть, что вы делаете по-другому.
Если это не сработает, тогда у вас есть простая полная программа для публикации на форуме. Это называется SSCCE. В противном случае мы просто строим дикие догадки, что не очень хорошо расходует наше время.