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.
3 Réponses :
Le volet de contenu de Exemple Comment ajouter plusieurs composants: P> 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é.
JFrame f = new JFrame();
f.getContentPane().add( new JButton( "One" ), BorderLayout.NORTH );
f.getContentPane().add( new JButton( "Two" ), BorderLayout.CENTER );
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 () code> 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.
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);
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.
Voici un exemple pour réaliser UI quelque chose comme ça
Les composants Java utilisés sont comme suit
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(); } }