0

私はこのような JPanel を持っています:

GridBagConstraints constPanelInfo = new GridBagConstraints();
    panelInfo = new JPanel(new GridBagLayout());
    JLabel sensor1 = new JLabel("Sensor: ");
    constPanelInfo.gridx = 0;
    constPanelInfo.gridy = 0;
    constPanelInfo.weightx = 0.0;
    constPanelInfo.fill = GridBagConstraints.NONE;
    panelInfo.add(sensor1, constPanelInfo);
    constPanelInfo.gridx = 1;
    constPanelInfo.gridy = 0;
    constPanelInfo.weightx = 1.0;
    constPanelInfo.fill = GridBagConstraints.HORIZONTAL;
    campoSensor.setPreferredSize(new Dimension(100, campoSensor.getPreferredSize().height));
    panelInfo.add(campoSensor, constPanelInfo);

ここで、campoSensor は次のように定義されます。

private JTextField campoSensor = new JTextField();

...しかし、JTextField は、必要に応じて 100 ピクセルの重みにスケーリングされません。setPreferredSize メソッドを書き込む前と同じサイズのままです。ここにアイデアはありますか?

4

2 に答える 2

0

うまくいけば、これはあなたが探しているものです...設定

constPanelInfo.weightx = 0;

センサーの場合、指定された 100px に維持する必要があります。つまり、すべての重みがゼロの場合、セルのグリッドと左端と右端の間に余分なスペースがすべて表示されます。

重みが設定されている場合は、

constPanelInfo.fill = GridBagConstraints.HORIZONTAL;

campoSensor は、優先サイズに関係なく、セルの全幅を埋めます。この幅は、おそらくパネルが置かれている JFrame のサイズによって決まります。

于 2011-06-22T10:30:02.487 に答える
0

constPanelInfo.iPadX=100;優先サイズを設定する代わりに設定してみてください。

于 2011-06-22T09:59:12.357 に答える