給你個小例子,已經(jīng)添加注釋了。自己運行下看看效果,滿意的話記得結(jié)貼子!
十余年的京口網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整京口建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“京口網(wǎng)站設(shè)計”,“京口網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestMenu extends Frame implements ActionListener{
TextArea ta; //文本區(qū)
MenuBar mb; //MenuBar 類封裝綁定到框架的菜單欄的
Menu mnFile,mnEdit,mnFormat,mnHelp; //從菜單欄部署的下拉式菜單組件
MenuItem miNew,miOpen,miSave,miSaveAs,miExit,miFont; //菜單中的所有項必須屬于類 MenuItem 或其子類之一
CheckboxMenuItem miBinary; //一個可包括在菜單中的復(fù)選框
public TestMenu(){
super("記事本"); //調(diào)用父類構(gòu)造方法
ta = new TextArea("",20,20); //新建文本區(qū),第一個參數(shù)是默認文本,第二個參數(shù)是行數(shù),第三個是列數(shù)
/*
* BorderLayout邊框布局
* 添加文本區(qū)到Frame,BorderLayout.CENTER是居中位置
* */
add(ta,BorderLayout.CENTER);
mb = new MenuBar(); //創(chuàng)建菜單欄對象
/*
* 創(chuàng)建菜單,指定菜單名
* */
mnFile= new Menu("文件");
mnEdit= new Menu("編輯");
mnFormat= new Menu("格式");
mnHelp= new Menu("幫助");
/*
* 創(chuàng)建子菜單,并指定名稱
* */
miNew= new MenuItem("新建");
miOpen= new MenuItem("打開");
miSave= new MenuItem("保存");
miSaveAs= new MenuItem("另存為");
miExit= new MenuItem("退出");
miExit.addActionListener(this); //為退出菜單添加監(jiān)聽
/*
* 添加上面創(chuàng)建的子菜單到文件菜單下
* */
mnFile.add(miNew);
mnFile.add(miOpen);
mnFile.add(miSave);
mnFile.add(miSaveAs);
mnFile.addSeparator(); //將一個分隔線或連字符添加到菜單的當前位置
mnFile.add(miExit);
miBinary= new CheckboxMenuItem("二進制"); //創(chuàng)建在復(fù)選框的子菜單
miFont= new MenuItem("字體"); //創(chuàng)建子菜單
/*
* 添加miBinary、miFont兩個子菜單到mnFormat(格式)下
* */
mnFormat.add(miBinary);
mnFormat.add(miFont);
/*
* 將文件、編輯、格式、幫助添加到菜單欄
* */
mb.add(mnFile);
mb.add(mnEdit);
mb.add(mnFormat);
mb.add(mnHelp);
setMenuBar(mb); //添加菜單欄到Frame
/*
* 關(guān)閉窗口時,關(guān)閉運行成語
* */
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String args[]){
TestMenu tm=new TestMenu();
tm.setSize(300,200); //設(shè)置窗體的寬、高
tm.setLocation(300,100); //將組件移到新位置Component類方法
tm.setVisible(true); //設(shè)置顯示窗體,true為顯示,false為隱藏
}
/**
* 監(jiān)聽事件,實現(xiàn)ActionListener接口的actionPerformed方法
*/
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand(); //獲取選中菜單的名稱
System.out.println(s);
if(s.equals("退出")){
System.exit(0); //停止運行程序
}
}
}
Menu、JMenu類里的addSeparator()方法可以插入分割線。
如果要豎直的分割線可以直接用add(new JSeparator(JSeparator.VERTICAL ))方法
java.awt.Menu類里的insertSeparator方法在指定的位置插入分隔符。
public void insertSeparator(int index)
參數(shù):
index - 菜單分隔符應(yīng)插入的位置。
拋出:
IllegalArgumentException - 如果 index 的值小于 0。
沒見過加豎杠的情況,也沒看見你的圖。。不過你要是想分類的話,可以在JMenu里加上另一個JMenu作為其附屬菜單。
菜單Menu類的對象調(diào)用addSeparator();添加分割線,此行代碼添加在你要分割線出現(xiàn)的位置上。
而創(chuàng)建復(fù)選菜單,用CheckboxMenuItem類創(chuàng)建菜單項就行。
至于多級菜單,只要把一個Menu類的對象添加到另一個Menu類的對象,就可以產(chǎn)生多級菜單了。
看代碼:
import?java.awt.Color;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JSplitPane;
import?javax.swing.SwingConstants;
public?class?Main?{
public?static?void?main(String[]?args)?throws?Exception?{
JFrame?frame?=?new?JFrame("JFrame?with?JSplitPane");
JLabel?label1?=?new?JLabel("label1");
label1.setBackground(Color.BLUE);
label1.setVerticalAlignment(SwingConstants.TOP);//設(shè)置標簽內(nèi)容處于頂端
label1.setHorizontalAlignment(SwingConstants.CENTER);//設(shè)置內(nèi)容居中
//?讓組件變成不透明,這樣在JLabel上所設(shè)置的顏色才能顯示出來
label1.setOpaque(true);
JLabel?label2?=?new?JLabel("label2");
label2.setBackground(Color.LIGHT_GRAY);
label2.setVerticalAlignment(SwingConstants.TOP);
label2.setHorizontalAlignment(SwingConstants.CENTER);
label2.setOpaque(true);
JLabel?label3?=?new?JLabel("label3");
label3.setBackground(Color.RED);
label3.setVerticalAlignment(SwingConstants.TOP);
label3.setHorizontalAlignment(SwingConstants.CENTER);
label3.setOpaque(true);
//加入?label1,label2?到?splitPane1?中,并設(shè)置?splitPane1?為水平分割
JSplitPane?splitPane1?=?new?JSplitPane(
JSplitPane.HORIZONTAL_SPLIT,?false,?label1,?label2);
// 設(shè)置?splitPane1?的分隔線位置,0.4?是相對于?splitPane1?的大小而定
splitPane1.setDividerLocation(0.4);
splitPane1.setResizeWeight(0.4);
JSplitPane?splitPane2?=?new?JSplitPane(
JSplitPane.VERTICAL_SPLIT,?false,?splitPane1,?label3);
splitPane2.setDividerLocation(0.5);
splitPane2.setResizeWeight(0.5);
frame.add(splitPane2);
frame.setSize(400,?300);
frame.setLocationRelativeTo(null);?//?設(shè)置居中
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
運行結(jié)果: