BorderLayout 问题中的 GridBagLayout:BorderLayout.CENTER 中没有显示
GridBagLayout in a BorderLayout problem : no display in BorderLayout.CENTER
我试图在 BorderLayout 的中心添加一个 GridBagLayout,但是当我将它添加到中心时,它没有出现。
尽管如此,如果我将它放在 BorderLayout 中的另一个位置,它会正确显示。
我试图在 BorderLayout 的中心放置另一个组件,但没有出现。
我想创建多个面板以在我的 JFrame 中显示它们。
我在使用 JFrame 中的实例属性构建这些面板时尝试添加这些面板。
这是我想要得到的例子
import java.awt.*;
import javax.swing.*;
public class Fenetre
{
private JPanel contentPane;
private PanelAccueil panelAccueil;
public void fenetreGraphique()
{
//Définit une nouvelle fenêtre pour le GUI
JFrame fenetre = new JFrame("AideMJ DD5");
fenetre.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
fenetre.setExtendedState(JFrame.MAXIMIZED_BOTH);
fenetre.setLocationRelativeTo(null);
//Définit les panels qui vont pouvoir s'afficher dans la fenêtre
contentPane = new JPanel();
//Ajout des différents panels créés
panelAccueil = new PanelAccueil(contentPane);
contentPane.add(panelAccueil);
//Affichage de la fenêtre
fenetre.setContentPane(contentPane);
fenetre.pack();
fenetre.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new Fenetre().fenetreGraphique();
}
});
}
}
class PanelAccueil extends JPanel
{
private JPanel panelAccueil;
private JLabel messageAccueil;
private JLabel signature;
private JButton nouveauMonstre;
private JButton voirMonstre;
public PanelAccueil(JPanel panel){
panelAccueil = panel;
panelAccueil.setBackground(new Color(51,51,51));
panelAccueil.setLayout( new BorderLayout() );
//Premier panel pour le bandeau en haut
messageAccueil = new JLabel("Bienvenue sur AideMJ pour Donjons & Dragons 5\u00e8me \u00e9dition", SwingConstants.CENTER);
messageAccueil.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
messageAccueil.setForeground( new Color(255,255,255) );
messageAccueil.setFont(new Font("Tahoma", Font.PLAIN, 36));
//Ajout des boutons du menu
JPanel boutons = new JPanel();
boutons.setBackground( new Color(51,51,51) );
boutons.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.CENTER;
nouveauMonstre = new JButton("Nouveau monstre");
nouveauMonstre.setPreferredSize( new Dimension(300, 60) );
boutons.add(nouveauMonstre, gbc);
gbc.gridy = 1;
voirMonstre = new JButton("Voir monstre");
voirMonstre.setPreferredSize( new Dimension(300, 60) );
boutons.add(voirMonstre, gbc);
//Dernier panel pour la signature en bas à droite
signature = new JLabel("D\u00e9velopp\u00e9 par Ebenial", SwingConstants.RIGHT);
signature.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
signature.setForeground( new Color(255,255,255) );
signature.setFont(new Font("Tahoma", Font.PLAIN, 15));
panelAccueil.add(messageAccueil, BorderLayout.NORTH);
panelAccueil.add(boutons, BorderLayout.CENTER);
panelAccueil.add(signature, BorderLayout.SOUTH);
}
}
代码中存在一些错误,但主要归结为对内容窗格(代码将其添加到另一个面板)的混淆。
此代码有许多更改,请仔细检查:
import java.awt.*;
import javax.swing.*;
public class Fenetre {
private PanelAccueil panelAccueil;
public void fenetreGraphique() {
//Définit une nouvelle fenêtre pour le GUI
JFrame fenetre = new JFrame("AideMJ DD5");
fenetre.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
fenetre.setExtendedState(JFrame.MAXIMIZED_BOTH);
fenetre.setLocationRelativeTo(null);
//Définit les panels qui vont pouvoir s'afficher dans la fenêtre
JPanel contentPane = new JPanel();
//Ajout des différents panels créés
panelAccueil = new PanelAccueil(contentPane);
//contentPane.add(panelAccueil.panelAccueil);
//Affichage de la fenêtre
fenetre.setContentPane(panelAccueil.panelAccueil);
fenetre.pack();
fenetre.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Fenetre()::fenetreGraphique);
}
}
class PanelAccueil {
JPanel panelAccueil;
public PanelAccueil(JPanel panel) {
panelAccueil = panel;
panelAccueil.setBackground(new Color(51, 51, 51));
panelAccueil.setLayout(new BorderLayout());
//Premier panel pour le bandeau en haut
JLabel messageAccueil = new JLabel("Bienvenue sur AideMJ pour Donjons & Dragons 5\u00e8me \u00e9dition", SwingConstants.CENTER);
messageAccueil.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
messageAccueil.setForeground(new Color(255, 255, 255));
messageAccueil.setFont(new Font("Tahoma", Font.PLAIN, 36));
//Ajout des boutons du menu
JPanel boutons = new JPanel();
boutons.setBackground(Color.red);
boutons.setBackground(new Color(51, 51, 51));
boutons.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.CENTER;
gbc.insets = new Insets(20,20,20,20);
Insets buttonInsets = new Insets(10,100,10,100);
for (int ii=0; ii<6; ii++) {
JButton b = new JButton("Button " + (ii+1));
b.setFont(b.getFont().deriveFont(30f));
b.setMargin(buttonInsets);
gbc.gridy = ii;
boutons.add(b, gbc);
}
//Dernier panel pour la signature en bas à droite
JLabel signature = new JLabel("D\u00e9velopp\u00e9 par Ebenial", SwingConstants.RIGHT);
signature.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
signature.setForeground(new Color(255, 255, 255));
signature.setFont(new Font("Tahoma", Font.PLAIN, 15));
panelAccueil.add(messageAccueil, BorderLayout.NORTH);
panelAccueil.add(boutons, BorderLayout.CENTER);
panelAccueil.add(signature, BorderLayout.SOUTH);
}
}
我试图在 BorderLayout 的中心添加一个 GridBagLayout,但是当我将它添加到中心时,它没有出现。 尽管如此,如果我将它放在 BorderLayout 中的另一个位置,它会正确显示。 我试图在 BorderLayout 的中心放置另一个组件,但没有出现。
我想创建多个面板以在我的 JFrame 中显示它们。 我在使用 JFrame 中的实例属性构建这些面板时尝试添加这些面板。
这是我想要得到的例子
import java.awt.*;
import javax.swing.*;
public class Fenetre
{
private JPanel contentPane;
private PanelAccueil panelAccueil;
public void fenetreGraphique()
{
//Définit une nouvelle fenêtre pour le GUI
JFrame fenetre = new JFrame("AideMJ DD5");
fenetre.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
fenetre.setExtendedState(JFrame.MAXIMIZED_BOTH);
fenetre.setLocationRelativeTo(null);
//Définit les panels qui vont pouvoir s'afficher dans la fenêtre
contentPane = new JPanel();
//Ajout des différents panels créés
panelAccueil = new PanelAccueil(contentPane);
contentPane.add(panelAccueil);
//Affichage de la fenêtre
fenetre.setContentPane(contentPane);
fenetre.pack();
fenetre.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new Fenetre().fenetreGraphique();
}
});
}
}
class PanelAccueil extends JPanel
{
private JPanel panelAccueil;
private JLabel messageAccueil;
private JLabel signature;
private JButton nouveauMonstre;
private JButton voirMonstre;
public PanelAccueil(JPanel panel){
panelAccueil = panel;
panelAccueil.setBackground(new Color(51,51,51));
panelAccueil.setLayout( new BorderLayout() );
//Premier panel pour le bandeau en haut
messageAccueil = new JLabel("Bienvenue sur AideMJ pour Donjons & Dragons 5\u00e8me \u00e9dition", SwingConstants.CENTER);
messageAccueil.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
messageAccueil.setForeground( new Color(255,255,255) );
messageAccueil.setFont(new Font("Tahoma", Font.PLAIN, 36));
//Ajout des boutons du menu
JPanel boutons = new JPanel();
boutons.setBackground( new Color(51,51,51) );
boutons.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.CENTER;
nouveauMonstre = new JButton("Nouveau monstre");
nouveauMonstre.setPreferredSize( new Dimension(300, 60) );
boutons.add(nouveauMonstre, gbc);
gbc.gridy = 1;
voirMonstre = new JButton("Voir monstre");
voirMonstre.setPreferredSize( new Dimension(300, 60) );
boutons.add(voirMonstre, gbc);
//Dernier panel pour la signature en bas à droite
signature = new JLabel("D\u00e9velopp\u00e9 par Ebenial", SwingConstants.RIGHT);
signature.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
signature.setForeground( new Color(255,255,255) );
signature.setFont(new Font("Tahoma", Font.PLAIN, 15));
panelAccueil.add(messageAccueil, BorderLayout.NORTH);
panelAccueil.add(boutons, BorderLayout.CENTER);
panelAccueil.add(signature, BorderLayout.SOUTH);
}
}
代码中存在一些错误,但主要归结为对内容窗格(代码将其添加到另一个面板)的混淆。
此代码有许多更改,请仔细检查:
import java.awt.*;
import javax.swing.*;
public class Fenetre {
private PanelAccueil panelAccueil;
public void fenetreGraphique() {
//Définit une nouvelle fenêtre pour le GUI
JFrame fenetre = new JFrame("AideMJ DD5");
fenetre.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
fenetre.setExtendedState(JFrame.MAXIMIZED_BOTH);
fenetre.setLocationRelativeTo(null);
//Définit les panels qui vont pouvoir s'afficher dans la fenêtre
JPanel contentPane = new JPanel();
//Ajout des différents panels créés
panelAccueil = new PanelAccueil(contentPane);
//contentPane.add(panelAccueil.panelAccueil);
//Affichage de la fenêtre
fenetre.setContentPane(panelAccueil.panelAccueil);
fenetre.pack();
fenetre.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Fenetre()::fenetreGraphique);
}
}
class PanelAccueil {
JPanel panelAccueil;
public PanelAccueil(JPanel panel) {
panelAccueil = panel;
panelAccueil.setBackground(new Color(51, 51, 51));
panelAccueil.setLayout(new BorderLayout());
//Premier panel pour le bandeau en haut
JLabel messageAccueil = new JLabel("Bienvenue sur AideMJ pour Donjons & Dragons 5\u00e8me \u00e9dition", SwingConstants.CENTER);
messageAccueil.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
messageAccueil.setForeground(new Color(255, 255, 255));
messageAccueil.setFont(new Font("Tahoma", Font.PLAIN, 36));
//Ajout des boutons du menu
JPanel boutons = new JPanel();
boutons.setBackground(Color.red);
boutons.setBackground(new Color(51, 51, 51));
boutons.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.CENTER;
gbc.insets = new Insets(20,20,20,20);
Insets buttonInsets = new Insets(10,100,10,100);
for (int ii=0; ii<6; ii++) {
JButton b = new JButton("Button " + (ii+1));
b.setFont(b.getFont().deriveFont(30f));
b.setMargin(buttonInsets);
gbc.gridy = ii;
boutons.add(b, gbc);
}
//Dernier panel pour la signature en bas à droite
JLabel signature = new JLabel("D\u00e9velopp\u00e9 par Ebenial", SwingConstants.RIGHT);
signature.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
signature.setForeground(new Color(255, 255, 255));
signature.setFont(new Font("Tahoma", Font.PLAIN, 15));
panelAccueil.add(messageAccueil, BorderLayout.NORTH);
panelAccueil.add(boutons, BorderLayout.CENTER);
panelAccueil.add(signature, BorderLayout.SOUTH);
}
}