Question

Voici le code:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class TestGrid {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Colored Trails");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(4, 9));
        panel.setMaximumSize(new Dimension(9*30-20,4*30));

        JButton btn;
        for (int i=1; i<=4; i++) {
            for (int j=1; j<=4; j++) {
                btn = new JButton();
                btn.setPreferredSize(new Dimension(30, 30));
                panel.add(btn);
            }

            btn = new JButton();
            btn.setPreferredSize(new Dimension(30, 10));
            panel.add(btn);

            for (int j=1; j<=4; j++) {
                btn = new JButton();
                btn.setPreferredSize(new Dimension(30, 30));
                panel.add(btn);
            }

        }
        mainPanel.add(panel);
        frame.add(mainPanel);

        frame.setSize(450,950);
        frame.setVisible(true);
    }
}

Je suppose avoir une table de boutons avec 4 lignes et 9 colonnes. Et la colonne du milieu doit être plus étroite que d'autres colonnes. j'ai essayé Dimension(30, 10) et Dimension(30, 10) Les deux n'ont aucun effet sur la largeur de la colonne du milieu. Pourquoi?

Était-ce utile?

La solution

Les gestionnaires de disposition sont libres d'ignorer la taille préférée. Spécifiquement, GridLayout Fera toujours chaque cellule dans la grille exactement de la même taille (c'est un gestionnaire de mise en page assez inutile pour cette raison).

Vous devrez utiliser un autre gestionnaire de mise en page, comme imbriqué BoxLayout ou un GroupLayout.

Autres conseils

Pour utiliser les couleurs du Web hôte, vous devez charger de manière dynamique la feuille de style de la bande hôte avec du JavaScript.Si vous utilisez JQuery sur la page, vous pouvez utiliser le bloc suivant de JavaScript pour injecter la feuille de style de la bande hôte sur votre page.

(function () {
    // Retrieve the host web's URL from the query string
    var scriptbase = $.queryString('SPHostUrl') + '/_layouts/15/';

    // Create a <link> tag for the style sheet
    var $doclink = $('link').attr('rel', 'stylesheet');
    // The style sheet is loaded through an ASP.NET HTTP handler (defaultcss.ashx)
    $doclink.attr('href', scriptbase + 'defaultcss.ashx');

    // Add the style sheet link to the 
    $('head').append($doclink);
})();

Si cela ne fonctionne pas, vous pouvez également consulter l'article de Microsoft Comment: Utilisez une feuille de style de site Web SharePoint sur les applications pour SharePoint pour un exemple qui ne nécessite pas de jQuery.

setPreferredSize ne modifiera pas la taille du bouton tant que la dimension n'est pas définie en utilisant la dimension.

Exemple:-

Dimension dim = new Dimension(20,20), then use setPerferredSize(dim).

J'ai trouvé cette version de méthode, qui correspond parfaitement à votre solution:

.addComponent(<<a jButton instance>>, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, <<put here an integer to set you max width button size>>)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top