Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 22

CardLayout, переключение панелей

29.06.2013, 12:23. Показов 4553. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу заметить, почему именно, он не переключается между панелями?
Java
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import javax.swing.*;
 
import java.awt.*;
import java.awt.event.*;
 
 
public class Main {
    
    public Main(){
        initComponents();
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            
            @Override
            public void run() {
                new Main();
                
            }
        });
    }
    private void initComponents(){
            Frame frame = new JFrame();  
            final CardLayout cards = new CardLayout();
            JPanel panelCont = new JPanel();
            panelCont.setLayout(cards);
            jPanel1 = new JPanel();
            final JPanel billPanel = new JPanel();
            jButton1 = new JButton();
            jButton2 = new JButton();
            jButton3 = new JButton();
            jButton4 = new JButton();
            jButton5 = new JButton();
            jButton6 = new JButton();
            jButton7 = new JButton();
            jScrollPane1 = new JScrollPane();
            jList1 = new JList();
             
            ((JFrame) frame).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
            jButton1.setText("Накладная");
 
            jButton2.setText("Платежка");
 
            jButton3.setText("Заявка на оплату");
 
            jButton4.setText("Загрузить");
 
            jButton5.setText("Сохранить");
 
            jButton6.setText("Просмотр");
 
            jButton7.setText("Выход");
 
            GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(0, 45, Short.MAX_VALUE)
                    .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addComponent(jButton1, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton2, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton3, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton4, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton5, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton6, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton7, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)))
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(14, 14, 14)
                    .addComponent(jButton1)
                    .addGap(16, 16, 16)
                    .addComponent(jButton2)
                    .addGap(18, 18, 18)
                    .addComponent(jButton3)
                    .addGap(18, 18, 18)
                    .addComponent(jButton5)
                    .addGap(18, 18, 18)
                    .addComponent(jButton4)
                    .addGap(18, 18, 18)
                    .addComponent(jButton6)
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton7)
                    .addGap(19, 19, 19))
            );
 
            jScrollPane1.setViewportView(jList1);
 
            GroupLayout layout = new GroupLayout(((JFrame) frame).getContentPane());
            ((JFrame) frame).getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 221, Short.MAX_VALUE)
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 282, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(79, Short.MAX_VALUE))
            );
 
            panelCont.add(jPanel1, "1");
            panelCont.add(billPanel, "billpanel");
            cards.show(panelCont, "1");
 
 
            // Кнопка Накладная
            jButton1.addActionListener(new ActionListener() { 
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    cards.show(billPanel, "billpanel");
                    
                }
            });
            
            //Кнопка выход
            jButton7.addActionListener(new ActionListener() {   
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);         
                }
            });
            
            //frame.pack();
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            int sizeWidth = 500;
            int sizeHeight = 500;
            int locationX = (screenSize.width - sizeWidth) / 2;
            int locationY = (screenSize.height - sizeHeight) / 2;
            frame.setBounds(locationX,locationY,sizeWidth,sizeHeight);
            frame.setVisible(true);             
    }
        private JButton jButton1;
        private JButton jButton2;
        private JButton jButton3;
        private JButton jButton4;
        private JButton jButton5;
        private JButton jButton6;
        private JButton jButton7;
        private JList jList1;
        private JPanel jPanel1;
        private JScrollPane jScrollPane1;
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.06.2013, 12:23
Ответы с готовыми решениями:

CardLayout
Всем привет.Суть проблемы: Есть два класса(Button1, MainFrame).Схема расположения-карточная.С чем связана вот такая ошибка?(см.скриншот...

Переключение панелей JavaFX
Выскакивает java.lang.NullPointerException В комментариях выделил строчки где ошибка, хочу добавить действие для кнопки Cancel в панели...

Переключение панелей кнопкой
Помогите пожалуйста написать код. Нужно чтобы панельки переключались одной кнопкой, но как задать компоненту панель что-то типо id. ...

5
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
29.06.2013, 14:57
кто же этот он ?
0
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 22
29.06.2013, 15:10  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
кто же этот он ?
Извиняюсь. Под местоимением "он" я имел ввиду CardLayout .
Посути, должно происходить переключение на другую панель при нажатии на кнопку. Но у меня даже первая панель с кнопками неверно отображается
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
29.06.2013, 16:40
вопрос надо задавать так чтобы вам самому было понятно )

1. я хочу получить ..... (описание что хотите - чем подробнее тем легче тем кто хочет помочь)
2. уже сделал ... (перечисляете что работает и на сколько %)
3. какие способы пробовали (опциональный пункт)

ps: вот вы уточнили про CardLayout, а другую панель - это какую? (у вас их 3 а не 2) не заставляйте тащить с вас задачу клещами )
0
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 22
29.06.2013, 17:07  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
вопрос надо задавать так чтобы вам самому было понятно )

1. я хочу получить ..... (описание что хотите - чем подробнее тем легче тем кто хочет помочь)
2. уже сделал ... (перечисляете что работает и на сколько %)
3. какие способы пробовали (опциональный пункт)

ps: вот вы уточнили про CardLayout, а другую панель - это какую? (у вас их 3 а не 2) не заставляйте тащить с вас задачу клещами )
Вообщем.
Есть панель - jPanel1 = new JPanel(); На ней Кнопки и список.
Есть панель JPanel billPanel = new JPanel(); на ней предполагается дальше кнопки и тд
Хочу что бы не иметь дело с разными фреймами, просто сделать переключение панелей.
Например Кнопка накладная на первой панели, у нее ActionPerformed и должна открываться вторая панель
Этого можно достичь при помощи CardLayout
Но для этого нужно создать другую панель(panelCont), предварительно указав setlayout(new CardLayout), и уже потом добавить на эту панель, две другие
Как мы видим ниже
Java
1
2
3
panelCont.add(jPanel1, "1");
panelCont.add(billPanel, "billpanel");
cards.show(panelCont, "1");
Так непоказывается нормально первая панель
Но если убрать строку
Java
1
panelCont.add(billPanel, "billpanel");
то все окей, но потом нельзя сделать переключение на другую панель
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
29.06.2013, 18:54
сломал я в вашем коде глаза и решил накидать по быстречку
Java
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
 
/**
 * @author mutagen
 */
public class Cards {
    
    private JFrame frame;
    private JPanel leftPanel;
    private String SHOW_CARD_1 = "Show card 1";
    private String SHOW_CARD_2 = "Show card 2";
    
    public Cards() {
        initComponents();
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Cards();
                
            }
        });
    }
    
    private void initComponents() {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        JPanel mainPanel = new JPanel();
        
        JPanel rightPanel = new JPanel();
        BoxLayout boxLayout = new BoxLayout(rightPanel, BoxLayout.Y_AXIS);
        rightPanel.setLayout(boxLayout);
        
        ActionListener buttonListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                CardLayout cl = (CardLayout) (leftPanel.getLayout());
                cl.show(leftPanel, ((JButton) e.getSource()).getText());
            }
        };
        
        JButton showCard1 = new JButton(SHOW_CARD_1);
        showCard1.addActionListener(buttonListener);
        rightPanel.add(showCard1);
        
        JButton showCard2 = new JButton(SHOW_CARD_2);
        showCard2.addActionListener(buttonListener);
        rightPanel.add(showCard2);
        
        JPanel textPanel1 = new JPanel();
        BoxLayout boxLayout1 = new BoxLayout(textPanel1, BoxLayout.Y_AXIS);
        textPanel1.setLayout(boxLayout1);
        textPanel1.add(new JTextField("Text Field 1 card 1"));
        textPanel1.add(new JCheckBox("CheckBox form card 1"));
        
        JPanel textPanel2 = new JPanel();
        BoxLayout boxLayout2 = new BoxLayout(textPanel2, BoxLayout.Y_AXIS);
        textPanel2.setLayout(boxLayout2);
        textPanel2.add(new JTextField("Text Field 2 card 2"));
        textPanel2.add(new JButton("Button from 2 card"));
        
        leftPanel = new JPanel(new CardLayout());
        leftPanel.add(textPanel1, SHOW_CARD_1);
        leftPanel.add(textPanel2, SHOW_CARD_2);
        
        mainPanel.add(leftPanel, BorderLayout.PAGE_START);
        mainPanel.add(rightPanel, BorderLayout.PAGE_END);
        
        frame.add(mainPanel);
        frame.pack();
        frame.setVisible(true);
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2013, 18:54
Помогаю со студенческими работами здесь

Переключение панелей по нажатию кнопки
Есть 10 panel, наложенных друг на друга, подскажите как сделать так чтоб при нажатие кнопки ("Далее") менялись panel-и с 1 по 10....

как работать с CardLayout в апплете
Народ я не давно начал учить джаву и ни как не могу понять как работает CardLayout и как можно добавить к нему панель типа Panel и сверху...

Использования компоновки CardLayout на JPanel и вывод на JFrame
Здравствуйте, Пытаюсь изменить известный пример кода под свои задумки. Когда код на Фрейме то все работает. Хочу пример кода положить...

Как получить доступ к CardLayout из другого класса?
Здравствуйте, в общем суть вопроса такова. Есть два класса MainClass и SubClass в MainClasss иметься CardLayout и мне надо изменить панель...

Создание панелей
помогите, есль класс, который должен создавать панели на Panel2, но при нажатии на кнопку (и даже с циклом) создается только 1 панель, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru