powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / динамическое создание gобьектов интерфейса пользователя
2 сообщений из 2, страница 1 из 1
динамическое создание gобьектов интерфейса пользователя
    #34836004
dr_Nemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неполучается динамически создать обьект и поставить его на форму.


package boxaddtest;

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

public class Main extends JFrame{

public Main() {
JButton button = new JButton();
button.setText("first");
button.setAction(new StrasnijAction());
panel = new JPanel();
panel.add(button);

Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.CENTER);

}

public static void main(String[] args) {
// TODO code application logic here
Main frame = new Main();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}

public class StrasnijAction extends AbstractAction {
public StrasnijAction(){
putValue(Action.NAME,"Exit");
putValue(Action.SHORT_DESCRIPTION,"Exit Application");
}

public void actionPerformed(ActionEvent event ){
JButton button = new JButton();
button.setText("Second");
panel.add(button);
}
}

private JPanel panel;
}
...
Рейтинг: 0 / 0
динамическое создание gобьектов интерфейса пользователя
    #34836429
Vurn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
 import  javax.swing.*;
 import  java.awt.event.ActionListener;
 import  java.awt.event.ActionEvent;
 import  java.awt.*;


 public   class  Main2 {
    JFrame jf; // main frame
    JPanel jp; // buttons panel

    // class constuctor
     public  Main2(){
        jf =  new  JFrame("button add demo");
        jp =  new  JPanel();
        jp.setLayout( new  BoxLayout(jp, BoxLayout.PAGE_AXIS));

        JButton jb = addButton("First button", jp);
        jb.addActionListener( new  ButtonActionListener());
        jp.add(jb);
        jf.getContentPane().add(jp);
        
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.pack();
        jf.setSize( new  Dimension( 400 , 300 ));
        jf.setVisible(true);
    }
    
    // add a button to given container
    JButton addButton(String text, Container cont) {
        JButton jb =  new  JButton(text);
        jb.setAlignmentX(Component.CENTER_ALIGNMENT);
        cont.add(jb);
         return  jb;
    }
    
    
     public   static   void  main(String[] args) {
        SwingUtilities.invokeLater( new  Runnable(){
             public   void  run() {
                 new  Main2();
            }
        });
    }

   // ActionListner for first button
     private   class  ButtonActionListener  implements  ActionListener {
         public   void  actionPerformed(ActionEvent e) {
            addButton("Next button",jp);
            jp.revalidate();
        }
    }
}

Несколько замечаний по примеру выше.
1. В браузере всегда код ставить внутри тегов SRC.
2. "extend JFrame" рекомендуется только в случае, если используются override методы. Вообще, наследовать любой класс рекомендуется только в случае, если используется расширение функционала, либо надо добраться до protected методов или переменных родителя, либо надо переписать поведение. Так как ни одного из этих событий у нас в программе нет, наследовать Main от JFrame нет никакого смысла, и даже вредно.
3. По возможности, все вызовы при работе со Свингом надо делать через SwingUtilities.invokeLater или .invokeAndWait, ибо, как известно Swing не thread-safe. Его можно не использовать, когда идет вызов метода из Свинга, как у меня, когда вызывается actionPerformed, но даже тогда, я проверил, что jp.revalidate находится в треде свинга через SwigUtilities.isDispatchingThread() (какову проверку потом удалил)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / динамическое создание gобьектов интерфейса пользователя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]