7
votes

Ajouter 2 ou plusieurs objets à JFRAME

Je veux afficher 2 objets sur jframe. J'ai essayé en ajoutant des objets à JPanel, puis ajoutez JPanel au Jframe, mais cela n'a pas non plus fonctionné. J'ai également essayé d'ajouter des objets Ball et Ball1 directement à JFRAME, mais cela montre uniquement le dernier objet ajouté. Je veux montrer les deux objets sur jframe à la fois. Le code indiqué ci-dessous indique que l'objet Ball1. xxx


0 commentaires

3 Réponses :


4
votes

Le volet de contenu de jframe code> a limaceLayout code> gestionnaire de mise en page par défaut. Cela signifie que si vous y ajoutez un composant, il sera mis au centre. Si vous y ajoutez un autre composant, il sera à nouveau placé dans le centre et il remplacera le composant précédemment ajouté.

Exemple Comment ajouter plusieurs composants: P>

JFrame f = new JFrame();

f.getContentPane().add( new JButton( "One" ), BorderLayout.NORTH );
f.getContentPane().add( new JButton( "Two" ), BorderLayout.CENTER );


2 commentaires

Je donne différentes coordonnées pour les objets où ils sont montrés. J'ai également essayé la deuxième méthode, elle écrase toujours le premier objet.


Mal, vous appelez f.getcontentpane () deux fois en passant 2 composants différents, mais sans spécifier des contraintes. Et un panneau avec limites sans contraintes spécifié explicitement ajoutera le composant à la position centrale, le 2e on remplaçant le premier.



5
votes

Je vous suggère d'utiliser un JPanel pour maintenir vos enfants en tant qu'enfants et ajouter un seul JPanel au volet de contenu JFrame.

Le deuxième appel à jframe.add () remplacera le premier JPANEL ajouté, si Vous ne spécifiez pas explicitement un emplacement de mise en page différent. P>

Un exemple simple à l'aide de BoxLayout: P>

JPanel mainPanel= new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

mainPanel.add(contentPane);
mainPanel.add(contentPane1);
contentPane.add(mainPanel);


1 commentaires

Le code fonctionne bien lorsque j'ajoute plus de 1 boutons sur le jframe, mais cela ne fonctionne pas avec les objets de mes classes. J'ai également essayé d'utiliser 3 JPANLES, puis ajoutez MAINPANEL à JFRAMA, mais toujours la même sortie.



1
votes

Voici un exemple pour réaliser UI quelque chose comme ça

 ui p>

Les composants Java utilisés sont comme suit Composants Java P>

Code: p>

public class MainPanel extends JPanel implements ActionListener {
    private static final long serialVersionUID = 1L;
    private int m_nX, m_nY;
    private int m_nHeight = 30, m_nWidthLabel = 500, m_nPadding = 2;

    private JLabel m_lblFilename, m_lblFileGen;

    public MainPanel() {
        // TODO Auto-generated constructor stub
        super(new BorderLayout());
        try {
            this.setLayout(null); 
            this.setBorder(new TitledBorder(new EtchedBorder(),
                "Dynamic Time Warping"));

            m_nX = this.getX() + 12;
            m_nY = this.getY() + 24;

            // Add the Filename Label
            m_lblFilename = new JLabel("Label1");
            m_lblFilename.setBorder(new LineBorder(Color.BLUE, 2));
            m_lblFilename.setBounds(nX, nY, m_nWidthLabel, m_nHeight);
            this.add(m_lblFilename);

            // Adding a Label
            nY += m_lblFilename.getHeight() + m_nPadding;
            m_lblFileGen = new JLabel("Label1");
            m_lblFileGen.setBorder(new LineBorder(Color.RED, 2));
            m_lblFileGen.setBounds(nX, nY, m_nWidthLabel, 3 * m_nHeight);
            m_lblFileGen.setForeground(Color.BLUE);
            this.add(m_lblFileGen);
        } catch (Exception e) {
        e.printStackTrace();
    }
}


0 commentaires