/ / Composant n'apparaissant pas lors de l'ajout au panneau - Java, swing, interface utilisateur, gridbaglayout, jradiobutton

Composant n'apparaissant pas lors de l'ajout au panneau - java, swing, interface utilisateur, gridbaglayout, jradiobutton

J'essaie donc de créer une série de boutons radio et de cases à cocher qui s'affichent comme suit:

          Radio Button
Check Box
Radio Button
Check Box
Radio Button

Cependant, je suis encore dans le processus d'apprentissage pourjava et je me demandais si quelqu'un pourrait résoudre ce problème. Pour le moment, les boutons et les cases sont affichés au bon endroit. Toutefois, le premier bouton radio ("Courier") ne s'affiche pas pour une raison quelconque. Si vous pouviez peut-être décrire la raison et une solution possible, cela serait génial.

Merci

Code mis à jour:

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class Question2 {
public static void main(String[] args) {
MyFrame f = new MyFrame("Font Chooser");
f.init();
}
}

class MyFrame extends JFrame {
MyFrame(String title) {
super(title);
}

private JPanel mainPanel;
private GridBagConstraints gbc = new GridBagConstraints();
private GridBagLayout gbLayout = new GridBagLayout();

void init() {
mainPanel = new JPanel();
mainPanel.setLayout(gbLayout);
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));
this.setContentPane(mainPanel);

gbc.gridx = 0;
gbc.gridy = 1;

JCheckBox cb = new JCheckBox("Bold");
gbLayout.setConstraints(cb, gbc);
mainPanel.add(cb);
gbc.gridy = 3;
gbLayout.setConstraints(cb, gbc);
cb = new JCheckBox("Italic");
mainPanel.add(cb);

gbc.gridx = 1;
gbc.gridy = 0;

JRadioButton rb = new JRadioButton("Times");
gbLayout.setConstraints(rb, gbc);
mainPanel.add(rb, gbc);
gbc.gridy = 2;
rb = new JRadioButton("Helvatica");
mainPanel.add(rb, gbc);
rb = new JRadioButton("Courier");
gbc.gridy = 4;
mainPanel.add(rb, gbc);


this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}

Réponses:

3 pour la réponse № 1

3 numéros

  • Y La coordonnée n'est pas réaffectée à une valeur différente, ce qui entraîne l'existence des 2 derniers boutons radio au même emplacement.
  • GridBagConstraints non utilisé pour les composants du côté gauche
  • setConstraints utilisé à tort pour définir des contraintes

Code résultant:

public class GoodGridBagApp {
public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
JFrame frame = new JFrame("Font Chooser");
frame.add(getMainPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

private JPanel getMainPanel() {

JPanel mainPanel = new JPanel();
GridBagConstraints gbc = new GridBagConstraints();
mainPanel.setLayout(new GridBagLayout());
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));

gbc.gridx = 1;
gbc.gridy = 2;

JCheckBox cb = new JCheckBox("Bold");
mainPanel.add(cb, gbc);
gbc.gridy = 4;
cb = new JCheckBox("Italic");
mainPanel.add(cb, gbc);

gbc.gridx = 2;
gbc.gridy = 1;

JRadioButton rb = new JRadioButton("Times");
mainPanel.add(rb, gbc);
gbc.gridy = 3;
rb = new JRadioButton("Helvatica");
mainPanel.add(rb, gbc);
rb = new JRadioButton("Courier");
gbc.gridy = 5;
mainPanel.add(rb, gbc);

return mainPanel;
}
});
}
}

Lis: Comment utiliser GridBagLayout