我想在JFrame中将Jbutton放在特定的坐标上。我为JPanel(我放在JFrame上)设置了setBounds,并为JButton设置了setBounds。但是,它们似乎没有按预期运行。
我的输出:
alt text http://i49.tinypic.com/2d8kuah.jpg
这是我的代码:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Control extends JFrame {
// JPanel
JPanel pnlButton = new JPanel();
// Buttons
JButton btnAddFlight = new JButton("Add Flight");
public Control() {
// FlightInfo setbounds
btnAddFlight.setBounds(60, 400, 220, 30);
// JPanel bounds
pnlButton.setBounds(800, 800, 200, 100);
// Adding to JFrame
pnlButton.add(btnAddFlight);
add(pnlButton);
// JFrame properties
setSize(400, 400);
setBackground(Color.BLACK);
setTitle("Air Traffic Control");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Control();
}
}
如何将JButton
放在坐标(0,0)处?
答案 0 :(得分:23)
在添加组件之前应该调用以下行
pnlButton.setLayout(null);
上面会将您的内容面板设置为使用绝对布局。这意味着您必须始终使用setBounds
方法明确设置组件的边界。
一般情况下,我不建议使用绝对布局。
答案 1 :(得分:3)
使用按钮上的child.setLocation(0, 0)
和parent.setLayout(null)
。不要在JFrame上使用setBounds(...)来调整它的大小,而是考虑仅使用setSize(...)
并让操作系统定位框架。
//JPanel
JPanel pnlButton = new JPanel();
//Buttons
JButton btnAddFlight = new JButton("Add Flight");
public Control() {
//JFrame layout
this.setLayout(null);
//JPanel layout
pnlButton.setLayout(null);
//Adding to JFrame
pnlButton.add(btnAddFlight);
add(pnlButton);
// postioning
pnlButton.setLocation(0,0);
答案 2 :(得分:2)
您应该首先使用语法pnlButton.setLayout()
设置布局,然后选择您想要的最合适的布局。例如:pnlButton.setLayout(new FlowLayout(FlowLayout.LEADING, 5, 5));
。然后,将该JButton放入JPanel。
答案 3 :(得分:1)
定义某个角落:
private static final int BUTTON_LOCATION_X = 300; // location x
private static final int BUTTON_LOCATION_Y = 50; // location y
private static final int BUTTON_SIZE_X = 140; // size height
private static final int BUTTON_SIZE_Y = 50; // size width
然后在下面:
JButton startButton = new JButton("Click Me To Start!");
// startButton.setBounds(300, 50,140, 50 );
startButton.setBounds(BUTTON_LOCATION_X
, BUTTON_LOCATION_Y,
BUTTON_SIZE_X,
BUTTON_SIZE_Y );
contentPane.add(startButton);
其中contentPane
是保存整个框架的Container
对象:
JFrame frame = new JFrame("Some name goes here");
Container contentPane = frame.getContentPane();
我希望这有帮助,对我有用......
答案 4 :(得分:0)
我已经弄明白了。对于按钮执行.setBounds(0,0,220,30) .setBounds布局就像这样(int x,int y,int width,int height)
答案 5 :(得分:0)
首先,记住您的JPanel大小高度和大小宽度,然后观察:JButton坐标是(xo,yo,x length,y length)。如果你的窗口是800x600,你只需要写:
JButton.setBounds(0, 500, 100, 100);
您只需使用坐标间隙来表示按钮,并知道窗口的终点和窗口的开始位置。