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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д