Пустой экран при вызове в средстве просмотра апплетов

Это мой первый пост здесь. Я впервые использую графический интерфейс в java, работая над домашним заданием. Я начал постепенно кодировать меню итальянского ресторана.

Приведенный ниже код компилируется без ошибок. После компиляции я запускаю средство просмотра апплета Italian.html, и на экране средства просмотра апплета отображается только пустое окно. Я немного смущен, так как у меня нет ошибок для работы. Я пропустил что-то простое.

Спасибо за любую помощь.

import javax.swing.*;
import java.awt.*;

public class Italian extends JApplet {

//Declare and array for a list of Pastas
private String [] pastas = {"Spaghetti", "Angel Hair Pasta", "Tortellini",
    "Ziti"};
private String [] sauces = {"Maranaria", "Alfredo", "Spicy Marania"};

public Italian() {
//Create the base panel for the restaurant page

JPanel i1 = new JPanel();

i1.setLayout(new GridLayout(2, 1));

i1.add(new JComboBox(pastas));
i1.add(new JComboBox(sauces));

HTML

<html>
  <head>
    <title>Java Applet Demo</title>
  </head>
  <body>
    <applet
      code = "Italian.class"
      width = 250
      height = 250>
    </applet>
  </body>
</html>

person Jayson Hartless    schedule 18.07.2012    source источник
comment
использование графического интерфейса в Java в первый раз Поэтому НЕ используйте апплет. Используйте рамку! Апплеты не для новичков (и если у вас есть книга, в которой говорится или подразумевается иное, удалите ее с вашего Kindle или, если это бумага, используйте ее для Kindle).   -  person Andrew Thompson    schedule 18.07.2012
comment
Чтобы быстрее получить помощь, опубликуйте SSCCE.   -  person Andrew Thompson    schedule 18.07.2012
comment
Забавно вы говорите, что Андрей. Наш профессор хочет, чтобы мы использовали только апплет. Хотел бы я использовать его как растопку.... jk ;)   -  person Jayson Hartless    schedule 18.07.2012
comment
Где вы добавляете i1 к экземпляру Italian. Кстати, лучше называть апплет ItalianMenu, чтобы избежать путаницы между этим и ItalianLanguage, или ItalianCar, или ItalianLover, или...   -  person Andrew Thompson    schedule 18.07.2012
comment
Я добавляю сюда JPanel i1 = new JPanel(); Строка 12.   -  person Jayson Hartless    schedule 18.07.2012
comment
Скажите ему/ей от меня (лучший поставщик как Applet, так и JApplet отвечает на SO), что они идиоты, не имеющие права учить. Для них получение заработной платы от своего учебного заведения (работодателя) является воровством. :(   -  person Andrew Thompson    schedule 18.07.2012
comment
Я добавляю это.. ..в ваш SSCCE? Где твой SSCCE? (В этих комментариях есть не очень тонкий намек — я не трачу много времени на просмотр фрагментов кода.)   -  person Andrew Thompson    schedule 18.07.2012
comment
Я не думаю, что у меня есть оболочка яичка, чтобы сказать это..... :(   -  person Jayson Hartless    schedule 18.07.2012
comment
Я подумал, что мой пример очень подходит для SSCCE. Я не хочу тратить ваше время. Я посмотрю, смогу ли я собрать информацию о том, как сделать это в качестве фрейма, и пойду оттуда.   -  person Jayson Hartless    schedule 18.07.2012
comment
@JaysonHartless - это НЕ SSCCE, потому что он неполный. Мы не можем скопировать и вставить код в файл, скомпилировать и выполнить его, чтобы воспроизвести проблему. Это не компилируется. Суть SSCCE заключается в том, что вы выполняете работу, чтобы нам было легко воспроизвести проблему.   -  person Stephen C    schedule 18.07.2012
comment
Вы правы Степан. Еще раз взглянув, я вижу, что мне не хватает закрывающих фигурных скобок. Это все, чего мне не хватает?   -  person Jayson Hartless    schedule 18.07.2012
comment
Да, как только я попробовал ваш код, оказалось, что в нем отсутствуют только две закрывающие скобки. Пожалуйста, включите их в будущем. Рад, что ты разобрался. :)   -  person Andrew Thompson    schedule 18.07.2012


Ответы (2)


Вы ничего не добавили в апплет, чтобы он отображался на экране.

Либо в вашем конструкторе, либо в методе инициализации вам нужно добавить созданную вами панель на панель содержимого.

getContentPane().setLayout(new BorderLayout()); // Just to make sure
getContentPane().add(i1);
person MadProgrammer    schedule 18.07.2012
comment
Я просто написал и просто добавил, и это сработало add (i1). Я все еще немного смущен и буду исследовать это немного больше. спасибо Андрей, спасибо безумный - person Jayson Hartless; 18.07.2012
comment
@JaysonHartless: Когда вы будете готовы, вы можете принять этот ответ, щелкнув пустая галочка слева. - person trashgod; 18.07.2012

вы должны добавить что-то в апплет, чтобы заставить их работать. Вот ссылка http://math.hws.edu/eck/cs124/javanotes4/c6/index.html, который поможет вам познакомиться с апплетами и графикой. это напр. поможет вам, который добавляет разные кнопки с правильной компоновкой:

/* 
This applet demonstrates various layout managers.
The applet itself uses a border layout with a JPanel in
the center, a JComboBox menu to the North, and a JLabel
to the south. The center panel uses a CardLayout.
Each card in the card layout contains a number of
buttons and uses a different layout manager.  The
JComboBox menu is used to select among these cards.
The JLabel reports events as they occur.
*/


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class LayoutDemo extends JApplet 
                      implements ActionListener, ItemListener {

CardLayout cards;      // the layout manager for the center panel
JPanel cardPanel;      // the center panel
JComboBox panelChoice; // menu for selecting which card to show
JLabel message;        // a message shown at the bottom of the applet

public void init() {

  panelChoice = new JComboBox();  // Set up the menu
  panelChoice.setBackground(Color.white);
  panelChoice.addItem("FlowLayout");   // Add in the names of the cards.
  panelChoice.addItem("FlowLayout with Big Hgap");
  panelChoice.addItem("Vertical BoxLayout");
  panelChoice.addItem("Horizontal BoxLayout with Struts");
  panelChoice.addItem("BorderLayout");
  panelChoice.addItem("GridLayout(3,2)");
  panelChoice.addItem("GridLayout(1,0)");
  panelChoice.addItem("GridLayout(0,1)");
  panelChoice.addItemListener(this);

  message = new JLabel("Layout Demo", JLabel.CENTER);  // Set up the mesage
  message.setBackground(Color.white);
  message.setOpaque(true);  // so background color will show
  message.setBorder(BorderFactory.createEmptyBorder(5,0,3,0));
  message.setForeground(Color.red);

  cardPanel = new JPanel();               // Set up the center panel
  cardPanel.setBackground(Color.white);
  cards = new CardLayout();
  cardPanel.setLayout(cards);

  setBackground(Color.blue);
  getContentPane().setBackground(Color.blue);  
  getContentPane().setLayout(new BorderLayout(3,3));    
  getContentPane().add("Center",cardPanel);
  getContentPane().add("North",panelChoice);
  getContentPane().add("South",message);

  JPanel panel;  // Will represent various cards to be added to the center panel.
  Box box;       // For the cards that use a BoxLayout.

  // Set up each "card" in the center panel to have its own layout
  // manager and to contain a variety of buttons.

  panel = new JPanel();
  // use default FlowLayout for panel
  panel.setBackground(Color.white);
  cardPanel.add(panel, "FlowLayout");
  addButton(panel,"First Button");  // ( addButton is a untility method, defined below )
  addButton(panel,"Second Button");
  addButton(panel,"Third Button");
  addButton(panel,"Fourth Button");
  addButton(panel,"Fifth Button");
  addButton(panel,"Sixth Button");
  addButton(panel,"Seventh Button");

  panel = new JPanel();  
  panel.setLayout(new FlowLayout(FlowLayout.CENTER,30000,5));
  panel.setBackground(Color.white);
  cardPanel.add(panel,"FlowLayout with Big Hgap");
  addButton(panel," A Button");
  addButton(panel,"Another Button");
  addButton(panel,"A Third Button");
  addButton(panel,"A Fourth Button");
  addButton(panel,"A Final Button");

  box = Box.createVerticalBox();  
  box.setBackground(Color.white);
  cardPanel.add(box,"Vertical BoxLayout");
  addButton(box,"Button One");
  addButton(box,"Button Two");
  addButton(box,"Button Three");
  addButton(box,"Button Four");
  addButton(box,"Button Five");
  addButton(box,"Button Six");

  box = Box.createHorizontalBox();  
  box.setBackground(Color.white);
  cardPanel.add(box,"Horizontal BoxLayout with Struts");
  addButton(box,"1st");
  addButton(box,"2nd");
  box.add( Box.createHorizontalStrut(10) );
  addButton(box,"3rd");
  addButton(box,"4th");
  box.add( Box.createHorizontalStrut(10) );
  addButton(box,"5th");

  panel = new JPanel();  
  panel.setLayout(new BorderLayout());
  panel.setBackground(Color.white);
  cardPanel.add(panel,"BorderLayout");
  addButton(panel,"Center Button", BorderLayout.CENTER); 
  addButton(panel,"North Button", BorderLayout.NORTH);
  addButton(panel,"South Button", BorderLayout.SOUTH);
  addButton(panel,"East Button", BorderLayout.EAST);
  addButton(panel,"West Button", BorderLayout.WEST);

  panel = new JPanel();  
  panel.setLayout(new GridLayout(3,2));
  panel.setBackground(Color.white);
  cardPanel.add(panel,"GridLayout(3,2)");
  addButton(panel,"Button 1");                  
  addButton(panel,"Button 2");                  
  addButton(panel,"Button 3");                  
  addButton(panel,"Button 4");                  
  addButton(panel,"Button 5");                  
  addButton(panel,"Button 6");                  

  panel = new JPanel();  
  panel.setLayout(new GridLayout(1,0));
  panel.setBackground(Color.white);
  cardPanel.add(panel,"GridLayout(1,0)");
  addButton(panel,"Button 1");                  
  addButton(panel,"Button 2");                  
  addButton(panel,"Button 3");                  
  addButton(panel,"Button 4");                  

  panel = new JPanel();  
  panel.setLayout(new GridLayout(0,1));
  panel.setBackground(Color.white);
  cardPanel.add(panel,"GridLayout(0,1)");
  addButton(panel,"Button 1");                  
  addButton(panel,"Button 2");                  
  addButton(panel,"Button 3");                  
  addButton(panel,"Button 4");                  
  addButton(panel,"Button 5");                  
  addButton(panel,"Button 6");                  

  } // end init()


 public Insets getInsets() {
    // specify borders around the edges of the applet
  return new Insets(3,3,3,3);
 }


void addButton(Container p, String name) {
      // Create a button with the given name and add it
      // to the given panel.  Set up the button to send
      // events to the applet.
  JButton b = new JButton(name);
  p.add(b);
  b.addActionListener(this);
}


void addButton(JPanel p, String name, Object option) {
      // Same as above, but use the "option" object
      // as an additional parameter in the add method.
  JButton b = new JButton(name);
  p.add(b, option);
  b.addActionListener(this);
 }


 public void actionPerformed(ActionEvent evt) {
     // A button was pressed.  Report the name
     // of the button by setting the message text.
  String buttonName = evt.getActionCommand();
  message.setText("Button \"" + buttonName + "\" was pressed.");
 }

 public void itemStateChanged(ItemEvent evt) {
     // The user has selected an item from the JComboBox.
     // Change the displayed card to match.
  String panelName = (String)panelChoice.getSelectedItem();
  cards.show(cardPanel, panelName);
  message.setText("Panel \"" + panelName + "\" was selected.");
 }


} // end class LayoutDemo
person joey rohan    schedule 14.11.2012