2016-05-04 11 views
0

GridBoxConstraintsのgridxとgridyが何もしないエラーが発生しています。私は複数のオブジェクトを追加して位置を変更しようとしていますが、どれも変化していません。あたかもグリッドやグリッドを使用しなかったかのように、有意義に使用するGridxとGridyは何も変更していません

public class Applet extends JApplet{ 
private JButton b1; 
private JButton b2; 
private JFrame f; 
private JPanel p; 
private JRadioButton r; 
private JRadioButton r1; 
//private JTextField demoField; 
GridBagConstraints c =new GridBagConstraints(); 


public Applet() 
{ 
    gui(); 
} 
public void gui() 
{ 
    f=new JFrame("Applet!"); 
    f.setVisible(true); 
    f.setSize(500,500); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    p = new JPanel(); 
    p.setVisible(true); 

    //demoField = new JTextField(); 



    r = new JRadioButton("Leave a message!!"); 
    r1 = new JRadioButton("Draw a shape!!"); 

    b1 = new JButton("Button!"); 
    b1.setVisible(true); 
    b2 = new JButton("Button 2!"); 
    b2.setVisible(true); 
    r1.setVisible(true); 
    r.setVisible(true); 
    //setting grid numbers 
    c.gridx=0; 
    c.gridy = 0; 
    //adding to frame 
    p.add(b2,c); 
    //setting grid numbers 
    c.gridx = 5; 
    c.gridy = 2; 
    p.add(r1,c); 
    //setting grid numbers 
    c.gridx = 5; 
    c.gridy = 5; 

    p.add(r,c); 
    //setting grid numbers 
    c.gridx = 0; 
    c.gridy = 0; 
    p.add(b1,c); 

    //p.add(demoField); 
    f.add(p); 

} 

答えて

0
gridxについては

gridy、あなたもgridwidthgridheightを使用する必要があります。 GridBagLayoutでは、グリッドのセル(および結果として行と列)は固定サイズではなく、内容の優先サイズを照会し、その重みによって決定される余分なスペースを与えます(さらに別の制​​約パラメータ詳細については、fine documentationを参照してください)。

また、複数のオブジェクトでGridBagConstraintsを再利用することはOKですが、すべてのフィールドをリセットせずに再利用する前に変更するのは混乱します(デフォルトではゼロに設定されているものもあります)。異なる場合は、次の子コンポーネントの別の制約オブジェクトを作成するのが最も簡単です。

ので:

b1 = new JButton("Button!"); 
b1.setVisible(true); 
b2 = new JButton("Button 2!"); 
b2.setVisible(true); 
r1.setVisible(true); 
r.setVisible(true); 
//setting grid numbers 
c.gridx = 0; 
c.gridy = 0; 
c.gridwidth = 5; 
c.gridheight = 2; 

//adding to frame 
p.add(b2,c); 
c = new GridBagConstraints(); 
//setting grid numbers 
c.gridx = 5; 
c.gridy = 2; 
p.add(r1,c); 
.... 

のように。

GridBagLayoutのレイアウトは非常に複雑で、あなたの例から判断すると、全く異なるものが必要な場合があります。固定サイズのグリッドが必要な場合、行をスキップする空のスペースGridBagLayoutではなくGridLayoutを使用してください。

関連する問題