當前位置:編程學習大全網 - 編程語言 - Java JFrame怎麽讓壹個部件覆蓋另外壹個部件

Java JFrame怎麽讓壹個部件覆蓋另外壹個部件

JFrame中壹個組件覆蓋另外壹個組件

步驟壹:設置布局為空布局

步驟二:設置兩個組件的位置,大小壹致,就可以實現壹個組件對另外壹個組件的覆蓋

說明:先加入的組件,會顯示在最上面,後加入的組件,會在底層。

為了比較直觀,清晰的顯示,我們可以把底層的組件大小,稍微設置大壹點

代碼如下

import?javax.swing.*;

import?java.awt.Color;

public?class?FrameDemo?extends?JFrame?{

public?static?void?main(String[]?args)?{

FrameDemo?frame?=?new?FrameDemo();

frame.setVisible(true);

}

public?FrameDemo()?{

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(200,?200);

setLocationRelativeTo(null);

getContentPane().setLayout(null);//設置布局為空布局

JPanel?jp1?=?new?JPanel();

jp1.setBounds(10,?10,?50,?50);

getContentPane().add(jp1);//先加入的組件,顯示在上面

jp1.setBackground(Color.RED);//設置該組件的背景色為紅色

JPanel?jp2?=?new?JPanel();

jp2.setBounds(10,?10,?60,?60);

getContentPane().add(jp2);//後加入的組件,顯示在下面

jp2.setBackground(Color.BLACK);//設置該組件的背景色為黑色

}

}

讓壹個JLabel部件覆蓋到壹個按鈕部件的上面又可以看到下面的按鈕

註意的是按鈕組件比較特殊,獲得焦點後,內容區域會重繪,導致Label看不見。所以要進行特殊處理。

import?javax.swing.*;

import?java.awt.Color;

public?class?FrameDemo2?extends?JFrame?{

public?static?void?main(String[]?args)?{

FrameDemo2?frame?=?new?FrameDemo2();

frame.setVisible(true);

}

public?FrameDemo2()?{

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(200,?200);

setLocationRelativeTo(null);

getContentPane().setLayout(null);//設置布局為空布局

JLabel?jl?=?new?JLabel("label文字");

jl.setForeground(Color.RED);

jl.setBounds(57,?81,?54,?15);

getContentPane().add(jl);

JButton?jb?=?new?JButton("按鈕");

jb.setBounds(32,?48,?104,?57);

jb.setFocusable(false);//設置不獲得焦點,避免獲得焦點後,按鈕內容重繪,導致JLabel無法顯示

//jb.setContentAreaFilled(false);//這行代碼可以使按鈕區域透明,就不會在獲得焦點後重繪了

getContentPane().add(jb);

}

}

怎麽讓文本換行 讓按鈕顯示多行文字?

JButton?jb1?=?new?JButton("測試\n按鈕");

使用傳統的“\n”,"\r\n"對文字換行處理按鈕換行,沒有任何效果

那麽不得不另辟蹊徑了,swing支持簡單的HTML標簽,所以可以通過HTML標簽來實現換行的效果

JButton?jb2?=?new?JButton("<html>測試<br>按鈕</html>");//使用HTML標記語言來換行

拓展:

雖然Swing對HTML的支持不完善,只支持簡單的壹些標簽效果的顯示,但是只要我們使用恰當,那麽會收到意想不到的效果。

  • 上一篇:求助,大學java基礎編程題。。。會的幫幫我吧。。謝謝。。
  • 下一篇:高中計算機會考涉及哪些內容?
  • copyright 2024編程學習大全網