How to set position of objects in JFrame?

余生长醉 提交于 2019-12-22 11:17:09

问题


I have Labels and JButtons i want to define the position in JFrame.

import java.awt.*;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.swing.*;

public class GuiFrame extends JFrame {

    public static void main(String[] args) throws UnknownHostException {

        JFrame f = new JFrame("This is a test");
        f.setSize(400, 150);
        JRadioButton ButtonServer = new JRadioButton("Server");
        JRadioButton ButtonClient = new JRadioButton("Client");

        InetAddress thisIp = InetAddress.getLocalHost();

        Label lip = new Label("Your IP is : " + thisIp.getHostAddress());
        Label setup = new Label("Setup as ");
        JButton ButtonOk = new JButton("OK");

        Container content = f.getContentPane();
        content.setBackground(Color.white);
        content.setLayout(new FlowLayout());
        content.add(lip);
        content.add(setup);
        content.add(ButtonServer);
        content.add(ButtonClient);
        content.add(ButtonOk);
        // f.addWindowListener(new ExitListener());
        f.setVisible(true);
    }
}

setLocation() doesnot seem to work here. How to manage the object's position in JFrame?


回答1:


Use proper LayoutManager. E.g. GridBagLayout.

Or you can combine multiple nested panels assigning own LayoutManager for each panel.

The worst way is to set layout to null and use setBounds()




回答2:


FlowLayout gives you some options. Look here .

For Example

   FlowLayout layout = new FlowLayout();
   layout.setAlignment(FlowLayout.CENTER);
   c.setLayout(layout);
   c.add(panel);



回答3:


I always use this: http://download.oracle.com/javase/tutorial/uiswing/layout/using.html

:)




回答4:


The Netbeans GUI Builder is great. I suggest you look into it.

http://netbeans.org/kb/docs/java/quickstart-gui.html



来源:https://stackoverflow.com/questions/8005484/how-to-set-position-of-objects-in-jframe

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!