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


Автор: KENNETH 4.12.2008, 19:35
Добрый вечер. Проблема состоит в невозможности загрузить из аплета другое содержание в то-же окно броузера.
То есть запускаем апплет содержащий кнопку "Button1". При нажатии на кнопку хочется зашрузить в то-же окно броузера другой экран с кнопкой допустим "Button2". При нажатии на "Button2" второе окно стирается и восстанавливается первое. Запускать обычное диалоговое окно (от JDialog) получается без проблем. А вот на запуск окна (отJPanel ) никакой реакции. Кроме того, я так понимаю каким то образом можно организовать стек таких окон если их больше 2х для того чтобы переключаться между ними. Тоже не понятно как. С запуском и переключением между обычными диалогами проблем нет.

Запускаемый апплет
Код

public class MainApp extends JApplet {
   public static JPanel RootPanel;
   JButton 
         b1 = new JButton("Button 1"), 
   JPanel
          p1 = new JPanel();
   TestTable     
        Tabl = new TestTable();

   public void init() {
        Container cp = getContentPane();
        cp.setLayout(null);
        cp.add(p1);
        p1.setLayout(null);
        p1.setBounds(new Rectangle(10 ,10,400,400));
        p1.add(b1);
        b1.setBounds(new Rectangle(10 ,200,100,20));
        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                RootPanel=null;
                RootPanel.add(Tabl,new Rectangle(0, 6, 76, 50));
            }
        });
    }   
}


Загружаемое окошко
Код

public class TestTable extends JPanel {

       JButton 
              b2 = new JButton("Button 2");
       JPanel
              p2 = new JPanel();
       public void TestTable() {
            p2.setLayout(null);
            p2.setBounds(new Rectangle(10 ,10,400,400));
            p2.add(b2);
            b2.setBounds(new Rectangle(300,200,100,20));
            b2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                }
            });
        }   
    }

Автор: LSD 8.12.2008, 18:52
1. Пользуйся кнопкой Код.
2. Ты сам не видишь в чем тут глупость:
Код

            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                RootPanel=null;
                RootPanel.add(Tabl,new Rectangle(0, 6, 76, 50));
            }

? smile 

Автор: KENNETH 8.12.2008, 19:00
Да я по разному пробовал. null конечно может лишний, но и без него не работает. Ты не издевайся - лучше расскажи как надо.

Автор: LSD 8.12.2008, 19:23
Цитата(KENNETH @  8.12.2008,  19:00 Найти цитируемый пост)
null конечно может лишний

Может? smile Ты получаешь гарантированный NullPointerException.


По сабжу вообще непонятно, что ты пытаешься сделать. Если ты хочешь убрать одну панель и добавить вместо неё другую. То для первой надо вызывать contenetPane.remove(pane1), а для второй contenetPane.add(pane1).
Во вторых непонятно зачем ты вообще отключил LayoutManager, но раз уж отключил, то выставляй положение и размер для всех компонентов. А то для Tabl ты ничего такого не прописывал.

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