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);