2010-11-28 33 views
0

d'abord, je vais vous montrer comment il est:Java Swing GridBagLayout - Problème avec plaçant deux éléments sur un panneau

picture_how_it_is

Voici comment il devrait être (voir lien ci-dessous dans mon commentaire):

L'étiquette doit être en haut et TabPane doit remplir le reste de l'écran avec des marges dans toutes les directions.

C'est le code pour le poser avec GridBagLayout:

// Layout --begin-- 
    this.mainPanel.setLayout(new GridBagLayout()); 
    GridBagConstraints gbc = new GridBagConstraints(); 

    // Layout:headLineLabel --begin-- 
    gbc.gridx = 0; 
    gbc.gridy = 0; 
    gbc.gridwidth = 1; 
    gbc.gridheight = 1; 
    gbc.fill = GridBagConstraints.HORIZONTAL; 
    gbc.ipadx = 0; 
    gbc.ipady = 0; 
    gbc.insets = new Insets(0, 10, 0, 0); 
    gbc.anchor = GridBagConstraints.FIRST_LINE_START; 
    this.mainPanel.add(this.headLineLabel, gbc); 
    // Layout:headLineLabel --end-- 

    // Layout:FestplattenreinigerGraphicalUserInterfaceTabbedPane --begin-- 
    gbc.gridx = 0; 
    gbc.gridy = 1; 
    gbc.gridwidth = 1; 
    gbc.gridheight = 1; 
    gbc.fill = GridBagConstraints.BOTH; 
    gbc.ipadx = 0; 
    gbc.ipady = 0; 
    gbc.insets = new Insets(10, 10, 10, 10); 
    gbc.anchor = GridBagConstraints.CENTER; 
    this.mainPanel.add(new FestplattenreinigerGraphicalUserInterfaceTabbedPane(), gbc); 
    // Layout:FestplattenreinigerGraphicalUserInterfaceTabbedPane --end-- 
    // Layout --end-- 

Ce que vous devez savoir:

  1. FestplattenreinigerGraphicalUserInterfaceTabbedPane JTabbedPane étend.
  2. J'ai essayé de spécifier toutes les contraintes (même avec leur valeur par défaut) à pratiquer.
  3. Si je rends hommage aux achors, la disposition reste telle qu'elle est.

Quel est le problème dans cette chose?

THX beaucoup! (désolé, je ne pouvais pas poster des images directement + 1 seul lien en raison de je suis nouveau -.-)

+0

Comment ça devrait être: http://img832.imageshack.us/img832/6905/howitshouldbe.jpg – JavaHater

Répondre

0

Vous avez oublié poids et poids qui sont nécessaires ou tout va se regrouper au milieu. Donc, avant d'ajouter le tabpane ajouter:

gbc.weightx = 1.0; 
gbc.weighty = 1.0; 
+0

thx man. après avoir mis en place les pondérations, quand j'ai redimensionné le tabet de la fenêtre et l'étiquette avait une très grande marge les uns aux autres. maintenant je les mets dans les mêmes grilles x et y et maintenant ça marche très bien, merci encore une fois tu as fait ma soirée! – JavaHater

+0

@JavaHater - J'espère que vous détestez java un peu moins :) – willcodejavaforfood

0

Pour faire quelque chose comme ça, exactement à votre échantillon, je pense que vous pouvez utiliser le « Free Design » dans NetBeans plutôt que GridBagLayout et restreindre la possibilité de redimensionner la fenêtre d'application .

0

N'utilisez pas GridBagLayout. Essayez un BorderLayout. L'étiquette dans le NORD et le volet à onglets dans le CENTRE.

Ou peut-être un BoxLayout vertical.

+0

désolé mais c'est un nono. je veux pratiquer la gridbaglayout dans ce cas ... – JavaHater

+0

Désolé mais que faites-vous ici? GridBagLayout est très bon à apprendre. – willcodejavaforfood

+0

@willcodejavaforfooc, le posté n'a pas indiqué où "essayant d'apprendre quelque chose". J'utilise toujours l'approche la plus simple pour résoudre un problème. Dans ce cas, GridBagLayout n'est pas la solution la plus simple. J'aime donner un choix à l'affiche afin qu'ils comprennent différentes approches. Beaucoup de débutants, pensent aveuglément qu'ils doivent coder d'une certaine façon parce qu'ils ont copié le code d'un endroit. – camickr