public MainFrame() {
JFrame frame = new JFrame("BoolPegia");
frame.setTitle("Background Color for JFrame");
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLayout(new BorderLayout());
JLabel background=new JLabel(new ImageIcon("F:\\photosForJava\\unnamed.png"));
frame.add(background);
background.setLayout(new FlowLayout());
JButton startPlay=new JButton("Start play!");
startPlay.addActionListener(this);
startPlay.setBounds(100, 50, 100,50); //here I am trying something, not working
background.add(startPlay);
frame.setSize(399,399);
frame.setSize(400,400);
}
我正在尝试确定startPlay
按钮的坐标..这不起作用。
帮助
答案 0 :(得分:0)
要根据您的坐标将控件放在框架上,您需要将框架的布局设置为null
。替换以下行:
frame.setLayout(new BorderLayout());
跟随并再试一次
frame.setLayout(null);
Note:
现在您需要为每个控件提供坐标。
答案 1 :(得分:0)
您不需要设置Frame布局,通过删除此行将标签布局设置为null。
background.setLayout(new FlowLayout());
如果你想知道Button位置,可以使用uisng getX()和getY()
System.out.println(startPlay.getX() + ", " + startPlay.getY());
答案 2 :(得分:0)
试试这个,它会更改按钮的大小,但不会更改其坐标。因为坐标是由LayoutManager
设置的,即背景的FlowLayout()
。
startPlay.setPreferredSize(new Dimension(50,30));
额外:建议使用布局,因为当帧重新调整大小时,LayoutManager会相应地调整组件。如果您执行setLayout(null)
,则表示用户不应为此setResizable(false)
无响应的用户界面重新调整框架大小,在我看来,它仅适用于小型和静态框架
答案 3 :(得分:0)
如果它只是你需要的Button的位置,你可以通过getLocation()和getLocationOnScreen()JButton方法(来自Component超类)获得它。
如果你想自己布局你的按钮,你必须将布局管理器设置为null并通过setLocation(Point)自己设置你的组件的位置,但这是一个不好的做法。