如何使用JAVA使Jpanels与窗口齐平

时间:2016-10-11 22:11:53

标签: java

我正在使用Jframe和Jpanels一个接一个地显示6个块。然而,我在块旁边的左侧(不是我添加的灰色边框)得到一个小间隙但是我希望盒子与屏幕的侧面齐平。

  import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.GridLayout;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import java.awt.BorderLayout;
    import java.awt.Color;

public class JavaTask1CW
{
    public static JLabel createLabel(String text)
    {
        JLabel label = new JLabel(text);
        label.setFont(new Font ("Ariel",Font.BOLD,30));
        return label;
    }

    public void go()
    {
        JFrame frame = new JFrame();
        JPanel panel1 = new JPanel();
        JPanel panel2 = new JPanel();
        JPanel panel3 = new JPanel();

        frame.setLayout(new BorderLayout(0,0));
        panel1.setLayout(new BorderLayout(0,0)); // 0 pixel gaps
        panel3.setLayout(new GridLayout(6,0)); //Column panel 2 west

        frame.add(panel1);
        panel1.add(panel2, BorderLayout.WEST);
        panel2.add(panel3, BorderLayout.WEST);

        for ( int i = 0 ; i < 5 ; i++ ) {
            panel3.add( new ColorLabel( 100, 100, Color.GREEN,1,Color.GRAY) );
        }
        panel3.add( new ColorLabel( 100, 100, Color.YELLOW,1,Color.GRAY) );

        frame.pack();
        frame.setVisible(true);
    }


    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        JavaTask1CW ob = new JavaTask1CW();
        ob.go();
    }
}

The output with a small gray gap

1 个答案:

答案 0 :(得分:0)

您忘记了setLayoutpanel2,您要在其中添加其他面板。 panel2默认为FlowLayout。所以你可以创建一个没有间隙的,或者从面板中getLayout投射它并将间隙设置为0.一个可能的解决方案:

FlowLayout fl = new FlowLayout(FlowLayout.LEFT, 0, 0);
panel2.setLayout(fl); // 0 pixel gaps