2017-09-26 4 views
0

J'ai besoin d'utiliser des emplacements personnalisés pour mes composants JFrame, j'ai essayé de chercher dans le document Java sur l'utilisation de l'objet insets pour faire un emplacement personnalisé mais je ne comprends pas bien ..java; façon basique d'ajouter des composants dans des emplacements personnalisés (jframe)

Si vous avez des moyens d'ajouter des composants dans des emplacements personnalisés ou un bon tutoriel/web/autre que je peux facilement apprendre à utiliser des emplacements personnalisés.

+0

double possible de [Définir un emplacement personnalisé pour un composant dans la mise en page de la boîte] (https : //stackoverflow.com/questions/36227097/set-custom-location-for-a-component-in-box-layout) – ParkerHalo

+0

Commencez par [Comment utiliser les gestionnaires de disposition] (https://docs.oracle.com/ javase/tutorial/uiswing/layout/layoutlist.html) - Ne vous laissez pas attraper par l'idée que les mises en page pixel parfaites (ou nulles) sont plus faciles, elles ne sont pas longues - Prenez le temps d'apprendre à utiliser le gestionnaires de mise en page et vous épargner un beaucoup de maux de tête – MadProgrammer

Répondre

0

si vous ne l'avez pas essayé la mise en page null, consultez ce code, peut être utile

public static void main(String[] args) { 
    SwingUtilities.invokeLater(NullLayout::new); 
} 

NullLayout() { 
    JFrame frame = new JFrame("Basket Game"); 
    JPanel mainPanel = new JPanel(); 
    mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); 

    for (int i = 0; i < 4; i++) { 
     JPanel strip = new JPanel(); 
     strip.setMaximumSize(new Dimension(Integer.MAX_VALUE, 50)); 
     strip.setBorder(BorderFactory.createTitledBorder("Strip " + i)); 
     strip.add(new JLabel("Strip " + i)); 
     mainPanel.add(strip); 
    } 

    JPanel gamearea = new JPanel(); 
    gamearea.setLayout(null); 
    mainPanel.add(gamearea); 

    for (int i = 0; i < 5; i++) { 
     int x = i * 100, y = i * 100; 
     JPanel basket = new JPanel(); 
     basket.setSize(200, 50); 
     basket.setLocation(x, y); 
     basket.setBackground(Color.YELLOW); 
     basket.add(new JLabel("x = " + x + ", y = " + y)); 
     gamearea.add(basket); 
    } 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setContentPane(mainPanel); 
    frame.pack(); 
    frame.setResizable(false); 
    frame.setSize(600, 600); 

    frame.setVisible(true); 
} 

}