JComboBox - Java (241489)
Формулировка задачи:
Нужно чтобы после того, как выбираю определенный пункт в списке JCobmoBox, в фрейме появились соответствующие этому пункту JLabel, JTextField и др. Я не знаю, как это сделать, так как изучаю Java самостоятельно.
import javax.swing.*; import javax.swing.border.Border; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class GraphInterface extends JFrame { JPanel window = new JPanel(); JLabel descriptionLabel = new JLabel("Калькулятор материала для стены или потолка с гипсокартона"); JLabel surfaceLabel = new JLabel("1. Поверхность, которую нужно обшить"); JLabel frameLabel = new JLabel("2. Тип каркаса"); JLabel widthWallLabel = new JLabel("3. Ширина стены"); JLabel meterLabel = new JLabel("м."); JLabel linearMeterLabel = new JLabel("пог.м."); JLabel heightWallLabel = new JLabel("4. Высота стены"); JLabel widthRoofLabel = new JLabel("3. Ширина потолка"); JLabel lengthRoofLabel = new JLabel("4. Длина потолка"); JTextField widthWallField = new JTextField(); JTextField heightWallField = new JTextField(); JTextField widthRoofField = new JTextField(); JTextField lengthRoofField = new JTextField(); String surface[] = {"Стена", "Потолок"}; JComboBox comboBoxSurface = new JComboBox (surface); String typeFrame[] = {"Металлический", "Деревянный"}; JComboBox comboBoxTypeFrame = new JComboBox(typeFrame); Font fontDescription = new Font("Monospased", Font.BOLD, 25); Font fontRequired = new Font("Monospased", Font.PLAIN, 15); Font fontCondition = new Font("Monospased", Font.PLAIN, 18); Border borderCondition = BorderFactory.createLineBorder(Color.BLACK, 1); GraphInterface() { window.setLayout(null); descriptionLabel.setSize(1000, 30); descriptionLabel.setLocation(0, 5); descriptionLabel.setFont(fontDescription); descriptionLabel.setForeground(Color.BLUE); descriptionLabel.setHorizontalAlignment(SwingConstants.CENTER); window.add(descriptionLabel); surfaceLabel.setSize(300, 25); surfaceLabel.setLocation(50, 80); surfaceLabel.setFont(fontCondition); surfaceLabel.setBorder(borderCondition); window.add(surfaceLabel); comboBoxSurface.setSize(150, 25); comboBoxSurface.setLocation(360, 80); comboBoxSurface.setFont(fontCondition); comboBoxSurface.setSelectedIndex(-1); window.add(comboBoxSurface); frameLabel.setSize(300, 25); frameLabel.setLocation(50, 110); frameLabel.setFont(fontCondition); frameLabel.setBorder(borderCondition); window.add(frameLabel); comboBoxTypeFrame.setSize(150, 25); comboBoxTypeFrame.setLocation(360, 110); comboBoxTypeFrame.setFont(fontCondition); comboBoxTypeFrame.setSelectedIndex(-1); window.add(comboBoxTypeFrame); // этот код нужно выполнять, если пользователь выбрал "Стена": // widthWallLabel.setSize(300, 25); // widthWallLabel.setLocation(50, 140); // widthWallLabel.setFont(fontCondition); // widthWallLabel.setBorder(borderCondition); // window.add(widthWallLabel); // heightWallLabel.setSize(300, 25); // heightWallLabel.setLocation(50, 170); // heightWallLabel.setFont(fontCondition); // heightWallLabel.setBorder(borderCondition); // window.add(heightWallLabel); // а этот код нужно выполнять, если пользователь выбрал "Потолок": // widthRoofLabel.setSize(300, 25); // widthRoofLabel.setLocation(50, 140); // widthRoofLabel.setFont(fontCondition); // widthRoofLabel.setBorder(borderCondition); // window.add(widthRoofLabel); // lengthRoofLabel.setSize(300, 25); // lengthRoofLabel.setLocation(50, 170); // lengthRoofLabel.setFont(fontCondition); // lengthRoofLabel.setBorder(borderCondition); // window.add(lengthRoofLabel); JFrame frame = new JFrame(); frame.setContentPane(window); frame.setSize(1000, 950); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.setResizable(false); frame.addWindowListener(new WindowListener() { public void windowActivated(WindowEvent event) { } @Override public void windowDeactivated(WindowEvent e) { } public void windowClosed(WindowEvent event) { } @Override public void windowIconified(WindowEvent e) { } @Override public void windowDeiconified(WindowEvent e) { } @Override public void windowOpened(WindowEvent e) { } public void windowClosing(WindowEvent event) { Object[] options = {"Да", "Нет"}; int n = JOptionPane .showOptionDialog(event.getWindow(), "Выйти с программы?", "Confirm Exit", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); if (n == 0) { event.getWindow().setVisible(false); System.exit(0); } } }); frame.setVisible(true); } public static void main(String[] args) { GraphInterface gi = new GraphInterface(); } }
Решение задачи: «JComboBox»
textual
Листинг программы
widthWallLabel.setSize(300, 25); widthWallLabel.setLocation(50, 140); widthWallLabel.setFont(fontCondition); widthWallLabel.setBorder(borderCondition); window.add(widthWallLabel); heightWallLabel.setSize(300, 25); heightWallLabel.setLocation(50, 170); heightWallLabel.setFont(fontCondition); heightWallLabel.setBorder(borderCondition); window.add(heightWallLabel); widthRoofLabel.setSize(300, 25); widthRoofLabel.setLocation(50, 140); widthRoofLabel.setFont(fontCondition); widthRoofLabel.setBorder(borderCondition); window.add(widthRoofLabel); lengthRoofLabel.setSize(300, 25); lengthRoofLabel.setLocation(50, 170); lengthRoofLabel.setFont(fontCondition); lengthRoofLabel.setBorder(borderCondition); window.add(lengthRoofLabel);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д