как изменить интерфейс в зависимости от выбора поля со списком
7371 просмотра
1 ответ
В диалоговом окне мне нужно отобразить одну группу элементов управления, если отмечен какой-либо комбо, и другую группу элементов управления в противном случае. Т.е. мне нужно 2 слоя, и мне нужно переключаться между ними, когда комбо отмечен / снят. Как я могу это сделать?
Спасибо
Автор: javapowered Источник Размещён: 12.11.2019 09:39Ответы (1)
14 плюса
Решение
CardLayout
хорошо работает для этого, как предложено ниже.
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/** @see http://stackoverflow.com/questions/6432170 */
public class CardPanel extends JPanel {
private static final Random random = new Random();
private static final JPanel cards = new JPanel(new CardLayout());
private static final JComboBox combo = new JComboBox();
private final String name;
public CardPanel(String name) {
this.name = name;
this.setPreferredSize(new Dimension(320, 240));
this.setBackground(new Color(random.nextInt()));
this.add(new JLabel(name));
}
@Override
public String toString() {
return name;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
create();
}
});
}
private static void create() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 1; i < 9; i++) {
CardPanel p = new CardPanel("Panel " + String.valueOf(i));
combo.addItem(p);
cards.add(p, p.toString());
}
JPanel control = new JPanel();
combo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JComboBox jcb = (JComboBox) e.getSource();
CardLayout cl = (CardLayout) cards.getLayout();
cl.show(cards, jcb.getSelectedItem().toString());
}
});
control.add(combo);
f.add(cards, BorderLayout.CENTER);
f.add(control, BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
Автор: trashgod
Размещён: 21.06.2011 09:36
Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- java Преобразование списка <Integer> в список <String>
- swing Java Swing: отображение изображений внутри Jar
- swing Как реализовать перетаскиваемые вкладки с помощью Java Swing?
- swing Можно ли отобразить компоненты Swing в JSP?
- swing Как добавить ActionListener в JButton в Java
- swing "Всегда сверху" Windows с Java
- user-interface Что такое MVP и MVC и в чем разница?
- user-interface Как я могу создать непосредственно исполняемое кроссплатформенное приложение с графическим интерфейсом на Python?
- user-interface Прототипирование GUI с клиентом
- user-interface Как заставить кнопку выглядеть так, как будто она нажата?
- user-interface Богатый GUI OS X Frameworks?
- cardlayout как изменить интерфейс в зависимости от выбора поля со списком
- cardlayout Расположение компонента внутри макета карты
- cardlayout Переключение панелей в Swing
- cardlayout CardView для Android не импортирует
- cardlayout CardLayout показывает пустой JPanel в Java