Ⅰ java中如果適用了布局管理器,還能再設置按鈕等組件的大小和位置了嗎
有布局管理器的情況下,設置組件位置大小是不起作用的。可以用如下代碼設置布局管理器為空。
把JFrame設置個BorderLayout,把JPanel放在North里,JPanel就會自動調整大小了。至於JPanel里的布局,不知你出於什麼特殊理由,單純需要重疊的話應該有合適的布局管理器。
另外還有個思路,改變一下你的設計方法,可能就有更簡單的方案。實際上很多設計中的需求以前就有很多人遇到了並且作出了好的方案,甚至已經是標准做法,所以多學習參考一下。
Ⅱ java怎樣放兩個按鈕在窗體的正中間
JPanel 放入到BorderLayout.CENTER , 那麼會自動填充滿整個contentPane的中間, 而JPanel內部還是流式布局, 一行排滿 自動換到下一行,從上到下. 所以按鈕還是在最上面.
(把JPanel的背景色改成藍色,就可以清晰的看到JPanel填滿了窗口)
importjavax.swing.*;
{
publicJFDemo2(){
JPanelpane=newJPanel();
BoxLayoutlayout=newBoxLayout(pane,BoxLayout.X_AXIS);//水平的盒布局
pane.setLayout(layout);
JButtonmessageButton=newJButton("OK");
JButtoncloseButton=newJButton("Cancel");
pane.add(Box.createGlue());//擠佔ok按鈕和窗口左側空間
pane.add(messageButton);
pane.add(Box.createHorizontalStrut(20));//按鈕之間的水平距離
pane.add(closeButton);
pane.add(Box.createGlue());//擠佔cancel按鈕和窗口右側空間
add(pane);
setTitle("Demo");//標題
setSize(320,230);//窗口大小
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//窗口點擊關閉時,退出程序
}
publicstaticvoidmain(String[]args){
newJFDemo2().setVisible(true);
}
}
總結: 推薦使用方法二,使用盒布局來實現.
一般不推薦使用絕對布局/空布局 來布局窗口, 因為不同的操作系統下顯示的效果不完全一致.
並且還需要寫大量的代碼來計算組件的大小和位置, 當窗口放大和縮小時 還需要重新計算位置
Ⅲ Java中如何給JButton/JLabel定位置【高分懸賞】
必須容器用 null 布局
然後控制項 setBounds
bounds 包含的參數是位置(x,y)和大小(w,h)
這個 bounds 本來是布局管理器去控制計算的
既然 null 布局,不用管理器
只有自己去設置
只 setLocation 的話,只有位置,沒有大小——大小默認為 (0,0),所以不行
Ⅳ java swing怎麼控制按鈕的位置啊
你可以將容器的整體布局設置為FlowLayout,然後在FlowLayout中添加一個Box布局,Box再添加3個部分,分別是表格、標簽和按鈕,兩個按鈕可以在用一個再新建一個Box對象並添加進去,下面是代碼:
import javax.swing.*;
import java.awt.*;
public class test extends JFrame{
public test()
{
setSize(300,200);
setLocationRelativeTo(null); //使窗體居中顯示
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setTitle("用戶信息");
String str[] = {"屬性","信息"};
Object str2[][]={{"姓名",""},{"職工號",""},{"身份證號",""},{"性別",""},{"出生年月",""}};
JTable table = new JTable(str2,str);
JButton Button1 = new JButton("修改信息");
JButton Button2 = new JButton("修改密碼");
JLabel Label = new JLabel("用戶:",JLabel.CENTER);
JScrollPane scrollpane = new JScrollPane(table);
Box box = Box.createVerticalBox();
Box buttonBox = Box.createHorizontalBox();
buttonBox.add(Button1);
buttonBox.add(Button2);
box.add(table);
box.add(Label);
box.add(buttonBox);
add(box);
}
public static void main(String []args)
{
test Test = new test();
Test.setVisible(true);
}
}