⑴ java中如何設置在JFrame中控制項的位置和大小
Java中通過布局管理器(LayoutManager)來布局控制項。
常見的布局管理器如下:
BorderLayout:Frame和Dialog的默認布局管理器。其把面板分為上北、下南、左西、右東和中間,5個部分,在未指定控制項大小的情況下,被加入的控制項將會隨著內容大小自動伸縮,隨著窗口的放大縮小也相應的產生伸縮。
FlowLayout :按順序布局控制項。所有控制項按照流水一樣排列,若當前行放不下了,則自動排到下一行。按子控制項的大小(getPreferedSize())在當前面板布局。
GridLayout :網格布局。該布局將所有控制項按從左到右,從上到下的形式把控制項以網格的形式排列出來。子控制項會填滿整個面板。
GridBagLayout :網格包布局。能布局復雜界面,但其使用也很復雜,一般不用。
null布局:即將布局管理器設置為null。此時,通過調用子控制項的setBounds方法進行布局。
其他布局管理器。以上是Java內置的常用布局管理器,還有一些非官方的好用布局管理器:XYLayout(按大小和位置布局)、VerticalFlowLayout (縱向流水布局)、TableLayout(表格布局)。
一般的Java程序布局方式:用FlowLayout布局一些按鈕,用BorderLayout嵌套多個面板。
⑵ java獲取當前jframe窗口大小
Swing中沒有提供直接獲取的方法。
但是對於JFrame和JDialog,可以通過getContentPane()獲取窗口的主面板,然後獲得。
Container contentPane=myFrame.getContentPane();
// 注意只有窗口顯示後getLocationOnScreen才可以調用,否則出錯
Point contentPos = contentPane.getLocationOnScreen();// 在屏幕的坐標
Dimension size = contentPane.getSize(); // 可視區域的大小
⑶ 如何設置java控制項的位置和大小
Java中通過布局管理器(LayoutManager)來布局控制項。
常見的布局管理器如下:
BorderLayout:Frame和Dialog的默認布局管理器。其把面板分為上北、下南、左西、右東和中間,5個部分,在未指定控制項大小的情況下,被加入的控制項將會隨著內容大小自動伸縮,隨著窗口的放大縮小也相應的產生伸縮。
FlowLayout :按順序布局控制項。所有控制項按照流水一樣排列,若當前行放不下了,則自動排到下一行。按子控制項的大小(getPreferedSize())在當前面板布局。
GridLayout :網格布局。該布局將所有控制項按從左到右,從上到下的形式把控制項以網格的形式排列出來。子控制項會填滿整個面板。
GridBagLayout :網格包布局。能布局復雜界面,但其使用也很復雜,一般不用。
null布局:即將布局管理器設置為null。此時,通過調用子控制項的setBounds方法進行布局。
其他布局管理器。以上是Java內置的常用布局管理器,還有一些非官方的好用布局管理器:XYLayout(按大小和位置布局)、VerticalFlowLayout (縱向流水布局)、TableLayout(表格布局)。
一般的Java程序布局方式:用FlowLayout布局一些按鈕,用BorderLayout嵌套多個面板。
⑷ java中為什麼在frame中加的控制項只有調整一下窗口大小才能顯示出來
你可以添加一個JPanel控制項,把其他控制項放在該JPanel控制項中
給你個實例:HelloWorld.java
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class HelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new HelloWorld();
}
HelloWorld(){
JFrame frame=new JFrame("Bai");
frame.setSize(300,200);//設置窗體大小
frame.setVisible(true);//設置窗體可見
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置關閉按鈕
JPanel panel=new JPanel();//添加一個面板,把控制項放在面板中
JTextField text=new JTextField();
text.setText("你好,很高興認識你");
JLabel label=new JLabel("這是一個標簽控制項");
panel.add(text);
panel.add(label);
frame.add(panel);
}
}
⑸ java獲取當前jframe窗口大小
jframe下有個方法是setresizable你可以試試..傳入一個布爾值.true是可以改變大小.false是不能改變窗體大小..默認是true可以改變的.這個方法是繼承自awt下的frame的
就是是否能叫用戶修改窗體大小
setresizable(false);
⑹ java Frame 顯示大小與設置的不同
// 窗口寬度= 內容面板寬+窗口左邊框+窗口右邊框
// 窗口高度= 內容面板高+窗口上邊框+窗口下邊框
每個操作系統的邊框粗細可能不太一致,你可以先輸出看看
參考代碼
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
//該窗口繼承自JFrame.
{
publicDemoFrame(){
setTitle("窗口");//窗口標題
setSize(500+8+8,500+31+8);//窗口大小
//窗口寬度=內容面板寬+窗口左邊框+窗口右邊框
//窗口高度=內容面板高+窗口上邊框+窗口下邊框
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//通常添加這行代碼,點擊窗口右下角的關閉時會結束程序
setVisible(true);
Insetsinsets=getInsets();//得到窗口的邊界區域。
System.out.println("窗口邊框上"+insets.top);//上
System.out.println("窗口邊框下"+insets.bottom);//下
System.out.println("窗口邊框左"+insets.left);//左
System.out.println("窗口邊框右"+insets.right);//右
Dimensiondi=getContentPane().getSize();//內容面板的大小
System.out.println("內容面板寬度"+di.width);//寬
System.out.println("內容面板的高度"+di.height);//高
}
//main方法
publicstaticvoidmain(String[]args){
newDemoFrame();
}
}
⑺ java 中如何獲取當前窗體大小
1、對於Frame,可以直接new 一個對象 f = new Frame()
2、通常獲取窗口f兩種方式是f.getsize(),該方法返回一個Dimension對象
3、可以根據dimension.getWidth 和 dimens.getHeight 獲取寬和高
⑻ java的Frame中的窗體大小設置問題
下面這個程序就是將一個圖片顯示在窗體之前,當然,四周也不會顯示出來
public class FirstFrame extends JFrame
{
FirstFrame(int time)
{
super("歡迎");
Container container = getContentPane();
JLabel jl = new JLabel(new ImageIcon("image/welcome.jpg"));//該標簽在其顯示區內垂直和水平居中對齊
container.add(jl, BorderLayout.CENTER);
setUndecorated(true); //禁用或啟用此窗體的裝飾,只有在窗體不可顯示時才調用此方法
setVisible(true);
pack(); //調整此窗口的大小,以適合其子組件的首選大小和布局
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();//獲取屏幕的大小,在具有多個顯示屏的系統上,使用主顯示屏
Dimension labelSize = jl.getPreferredSize();
setLocation(screenSize.width/2 - (labelSize.width/2),screenSize.height/2 - (labelSize.height/2));
final int pause = time;
final Runnable closerRunner = new Runnable()
{
public void run()
{
setVisible(false);
dispose();
}
};
Runnable waitRunner = new Runnable()
{
public void run()
{
try
{
Thread.sleep(pause);
SwingUtilities.invokeAndWait(closerRunner);//導致Runnable的run()在 AWT事件指派線程上同步執行
}
catch(Exception e){}
}
};
Thread waitThread = new Thread(waitRunner, "SplashThread");//run 方法被調用的對象,新線程的名稱
waitThread.start();
}
public static void main(String args[])
{
new FirstFrame(1500);
try
{
Thread.sleep(1500);
}
catch(Exception e){}
}