开发者

Positioning child panels using FlowLayout

I have two panels:

  • main_panel
  • child_panel

The main_panel layout is set using:

main_panel.setLayout(flowlayout)

I then added child_panel to main_panel:

main_panel.add(child_panel)

The child_panel gets added to main_panel but its position is at the cross-section of horizontal midpoint and top vertical section of screen. I want child_panel to be at the top left corner, something I could have done by using child_panel.setlocation(a,b) method, if I have set the layout of main_panel as null开发者_JAVA百科.

I have used FlowLayout here because I want components in the JPanel to keep adjusting with the size of JFrame.

So can I add child_panel to main_panel at the exact location I want, even if I set the Layout of main_panel as not null?


I would recommend using GridPanelLayout for your case - you can set the element to be in grid location (0,0) and set it to fill horizontal and vertical, which will cause it to scale with size. You can then follow the look and feel guidelines to get the proper margins and the like.


How about this?

import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Test {
    public static void main(String[] args) {
        JFrame f = new JFrame("Test");
        JPanel main = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JPanel child = new JPanel();
        child.add(new JLabel("Label"));
        main.add(child);
        f.getContentPane().add(main);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }

}


In this case I would use SpringLayout, it gives you the ability to exactly place the sides of your panel (NORTH, SOUTH, WEST, EAST) with the sides of any other component (in your case the main panel)

This tutorial would clarify what I am saying

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜