質問

これがコードです:

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);
    }
}

4行と9列のボタンのテーブルがあると思います。また、中央の列は他の列を狭くする必要があります。私は試した Dimension(30, 10)Dimension(30, 10) どちらも中央の列の幅に影響を与えません。なんで?

役に立ちましたか?

解決

レイアウトマネージャーは、優先サイズを自由に無視できます。具体的には、 GridLayout グリッド内の各セルは常にまったく同じサイズになります(そのため、それはかなり役に立たないレイアウトマネージャーです)。

Nestedなどの別のレイアウトマネージャーを使用する必要があります BoxLayout またはa GroupLayout.

他のヒント

ホストWebの色を使用するには、Host WebのスタイルシートをいくつかのJavaScriptで動的にロードする必要があります。ページ上でjQueryを使用している場合は、次のJavaScriptのブロックを使用して、ホストWebのスタイルシートをページに注入できます。

(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);
})();
.

それがうまくいかない場合は、Microsoftの記事どのように:SharePoint のSharePointのWebサイトのスタイルシートを使用します。jQueryを必要としない例。

setPreferredSize ディメンションを使用して寸法が設定されるまで、ボタンのサイズを変更しません。

例:-

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

このメソッドバージョンを見つけました。これはあなたのソリューションにぴったりです。

.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>>)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top