diff --git a/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java b/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java index c138182..ec59e04 100644 --- a/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java +++ b/TestV2/src/fr/monkhanny/dorfromantik/gui/SettingsPanel.java @@ -77,34 +77,65 @@ public class SettingsPanel extends JPanel { } private JPanel createSoundPanel(String labelText, JSlider volumeSlider, ChangeListener sliderChangeListener, MuteCheckBoxListener muteCheckBoxListener) { - JPanel panel = new JPanel(new GridBagLayout()); + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); // Utilisation de BoxLayout pour une disposition verticale panel.setOpaque(false); - GridBagConstraints gbc = new GridBagConstraints(); - gbc.insets = new Insets(10, 10, 10, 10); - gbc.gridx = 0; + // Titre de la section (ex: "Musique" ou "SFX") + JLabel titleLabel = new JLabel(labelText); + titleLabel.setFont(new Font("Roboto", Font.BOLD, 30)); + titleLabel.setAlignmentX(Component.LEFT_ALIGNMENT); // Alignement à gauche + panel.add(titleLabel); + panel.add(Box.createVerticalStrut(10)); // Espacement vertical + // Panneau pour le bouton "Couper le son" + JPanel mutePanel = new JPanel(); + mutePanel.setLayout(new BoxLayout(mutePanel, BoxLayout.X_AXIS)); // Disposition horizontale pour inverser l'ordre + mutePanel.setOpaque(false); + + JLabel muteLabel = new JLabel("Couper le son"); + muteLabel.setFont(new Font("Roboto", Font.PLAIN, 18)); // Augmentation de la taille du texte + muteLabel.setAlignmentX(Component.LEFT_ALIGNMENT); // Aligner le texte à gauche + mutePanel.add(muteLabel); + + // Ajouter la checkbox après le texte pour qu'elle soit à droite JCheckBox muteCheckBox = new JCheckBox(); + muteCheckBox.setFont(new Font("Roboto", Font.PLAIN, 18)); // Optionnel, si le style du texte dans la case est souhaité + muteCheckBox.setFocusPainted(false); + muteCheckBox.setOpaque(false); + muteCheckBox.setBorderPainted(false); + muteCheckBox.setMargin(new Insets(5, 5, 5, 5)); muteCheckBox.setSelected(!("Musique".equals(labelText) ? Options.MUSIC_MUTED : Options.SOUNDS_MUTED)); muteCheckBox.addActionListener(muteCheckBoxListener); - panel.add(new JLabel(labelText), gbc); - gbc.gridx++; - panel.add(muteCheckBox, gbc); + mutePanel.add(Box.createHorizontalGlue()); // Espace flexible entre le texte et la checkbox + mutePanel.add(muteCheckBox); + panel.add(mutePanel); + panel.add(Box.createVerticalStrut(10)); // Espace vertical + + // Panneau pour le slider "Gérer le son" + JPanel volumePanel = new JPanel(new BorderLayout()); + volumePanel.setOpaque(false); + JLabel manageVolumeLabel = new JLabel("Gérer le son"); + manageVolumeLabel.setFont(new Font("Roboto", Font.PLAIN, 18)); + volumePanel.add(manageVolumeLabel, BorderLayout.NORTH); + + // Création et ajout du slider volumeSlider.setPreferredSize(new Dimension(200, 50)); volumeSlider.setMajorTickSpacing(50); volumeSlider.setPaintTicks(true); volumeSlider.setPaintLabels(true); volumeSlider.setFont(new Font("Roboto", Font.PLAIN, 16)); volumeSlider.addChangeListener(sliderChangeListener); + volumePanel.add(createSliderPanel(volumeSlider), BorderLayout.CENTER); - gbc.gridx++; - panel.add(createSliderPanel(volumeSlider), gbc); + panel.add(volumePanel); return panel; } + private JPanel createSliderPanel(JSlider volumeSlider) { JPanel sliderPanel = new JPanel(new BorderLayout()); sliderPanel.setOpaque(false);