1. 程式人生 > >(總結)Swing元件的使用---下拉式選單(menu),彈出式選單(JPopupMenu),選項卡窗體(JTabbedPane)

(總結)Swing元件的使用---下拉式選單(menu),彈出式選單(JPopupMenu),選項卡窗體(JTabbedPane)

 選單是GUI中最常用的元件,選單不是Component類的子類,不能放置在普通容器中,不受佈局管理器的約束,只能放置在選單欄中.

 選單元件由選單欄 (MenuBar)、選單(Menu)和選單項(MenuItem)三部分組成。 一個選單欄由若干個選單組成,一個選單又由若干個選單項組成。一般選單欄放 Frame 視窗中,只要呼叫 Frame 類的 setMenuBar()方法即可。

    常用的選單有:下拉式選單和彈出式選單(獨立顯示,可出現在任意地方).

一:下拉式選單的建立步驟:

1.建立一個選單欄。 
2.呼叫 Frame 的 setMenuBar()方法將選單欄加入 Frame 中。 
3.分別建立若干個 Menu 物件,並加入 MenuBar 中。 
4.對於每個 Menu 物件,分別建立若干個 MenuItem 物件,並加入 Menu 中。

例項:

import java.awt.*;

public class MenuDemo {

	Frame f;
	MenuBar mb;
	Menu menuFile;
	MenuItem mItemNew, mItemOpen, mItemSave;

	MenuDemo() {
		f = new Frame("我的選單例項");
		f.setBounds(300, 100, 400, 300);

		mb = new MenuBar(); // 建立選單欄MenuBar
		menuFile = new Menu("檔案"); 

		mItemNew = new MenuItem("新建");
		mItemOpen = new MenuItem("開啟");
		
		menuFile.add(mItemNew);
		mItemSave = new MenuItem("儲存");
		
		menuFile.add(mItemOpen);
		// 加入分割線
		menuFile.addSeparator();
                menuFile.add(mItemSave);
                mb.add(menuFile); 
                // 選單欄中加入“檔案”選單
 
// setMenuBar:將此窗體的選單欄設定為指定的選單欄。
                f.setMenuBar(mb); 
                f.setVisible(true);
          }
    public static void main(String[] args) {
        new MenuDemo();
  }
}

有圖有真相:(下拉的選單項無法截圖)


二:彈出式選單的建立步驟:

 1.先建立最基本的JFrame框架.

 2.建立右鍵彈出式選單(JPopupMenu)和新增的選單項(JMenuItem). 3.使用add方法和insert方法向JPopupMenu中新增或者插入. 4.通過呼叫彈出式選單觸發器對應的show方法來顯示彈出式選單,檢查所有的MouseEvent事件,看其是否是彈出式選單觸發器,然後在合適的時候顯示彈出式選單

例項:

import java.awt.event.*;
import javax.swing.*;

public class JPopMenu_Demo extends JFrame {

	// 彈出選單的實現,彈出選單是一個可彈出並顯示一系列選項的小視窗
	JPopupMenu popupMenu; 

	public JPopMenu_Demo() {
		super("右鍵彈出式選單"); // 呼叫父類建構函式
		// 例項化彈出選單 
		popupMenu = new JPopupMenu(); 
        // 增加選單項到選單上
		popupMenu.add(new JMenuItem("選單項"));
		popupMenu.add(new JButton("按鈕")); 
		popupMenu.add(new JLabel("標籤"));

		myEvents();

		setSize(350, 300); // 設定視窗大小
		setLocation(400, 200);
		setVisible(true); // 設定視窗為可視
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 關閉視窗時退出程式
	}

	private void myEvents() {
		// 視窗的滑鼠事件處理
		addMouseListener(new MouseAdapter() { 
			// 點選滑鼠
			public void mousePressed(MouseEvent event) { 
				// 呼叫triggerEvent方法處理事件
				triggerEvent(event); 
			}
			// 釋放滑鼠
			public void mouseReleased(MouseEvent event) { 
				triggerEvent(event);
			}

			private void triggerEvent(MouseEvent event) { // 處理事件
				// isPopupTrigger():返回此滑鼠事件是否為該平臺的彈出選單觸發事件。
				if (event.isPopupTrigger()) 
					// 顯示選單
					popupMenu.show(event.getComponent(), event.getX(),
							event.getY()); 
			}
		});
	}

	public static void main(String args[]) {
		new JPopMenu_Demo();
	}
}

有圖有真相(不過挺醜)


三:選項卡窗體:

1.基本說明:

2.常用方法:

我們把多個JPanel的物件新增到 JTabbedPanel中去 。然後再
JTabbedPanel 新增到窗體,程式碼如下:
JTabbedPane jp=new JTabbedPane(JTabbedPane.LEFT) ; //設定選項卡在座標
JPanel p1=new JPanel() ;
JPanel p2=new JPanel() ;
JPanel p3=new JPanel() ;
JPanel p4=new JPanel() ; //建立多個容器
jp.add("窗體1", p1) ;
jp.add("窗體2", p2) ;
jp.add("窗體3", p3) ;//新增子容器,並且為選項卡新增名字
this.add(jp,BorderLayout.CENTER); //將選項卡窗體新增到主窗體上去

3.程式碼示例和截圖:

import java.awt.*;
import javax.swing.*;

/**
 * <p>Title: 選項卡演示</p>
 * <p>Description: 這裡是一個選項卡演示,點選不同的卡片,顯示的內容不同</p>
 */

public class JTabbedPaneDemo1 extends JPanel {
	
	public JTabbedPaneDemo1() {
		super(new GridLayout(1, 1));

		ImageIcon icon = createImageIcon("images/MyIcon.gif");
		JTabbedPane tabbedPane = new JTabbedPane();

		Component panel1 = makeTextPanel("#第一個卡片#");
		tabbedPane.addTab("One", icon, panel1, "第一個卡片提示資訊!");
		tabbedPane.setSelectedIndex(0);

		Component panel2 = makeTextPanel("##第二個卡片##");
		tabbedPane.addTab("Two", icon, panel2, "第二個卡片提示資訊!");

		Component panel3 = makeTextPanel("###第三個卡片###");
		tabbedPane.addTab("Three", icon, panel3, "第三個卡片提示資訊!");

		Component panel4 = makeTextPanel("####第四個卡片####");
		tabbedPane.addTab("Four", icon, panel4, "第四個卡片提示資訊!");

		// 將選項卡新增到panl中
		add(tabbedPane);
	}

	/**
	 * <br>
	 * 方法說明:新增資訊到選項卡中 <br>
	 * 輸入引數:String text 顯示的資訊內容 <br>
	 * 返回型別:Component 成員物件
	 */
	protected Component makeTextPanel(String text) {
		JPanel panel = new JPanel(false);
		JLabel filler = new JLabel(text);
		filler.setHorizontalAlignment(JLabel.CENTER);
		panel.setLayout(new GridLayout(1, 1));
		panel.add(filler);
		return panel;
	}

	/**
	 * <br>
	 * 方法說明:獲得圖片 <br>
	 * 輸入引數:String path 圖片的路徑 <br>
	 * 返回型別:ImageIcon 圖片物件
	 */
	protected static ImageIcon createImageIcon(String path) {
		// java.net.URL imgURL = TabbedPaneDemo.class.getResource(path);
		if (path != null) {
			return new ImageIcon(path);
		} else {
			System.out.println("Couldn't find file: " + path);
			return null;
		}
	}

	public static void main(String[] args) {
		// 使用Swing窗體描述
		// JFrame.setDefaultLookAndFeelDecorated(true);

		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			
		}
		// 建立窗體
		JFrame frame = new JFrame("TabbedPaneDemo");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().add(new JTabbedPaneDemo1(), BorderLayout.CENTER);

		// 顯示窗體
		frame.setSize(400, 200);
		frame.setVisible(true);
	}
}
執行截圖:  


相關推薦

(總結)Swing元件的使用---選單(menu),選單(JPopupMenu),選項窗體(JTabbedPane)

 選單是GUI中最常用的元件,選單不是Component類的子類,不能放置在普通容器中,不受佈局管理器的約束,只能放置在選單欄中.  選單元件由選單欄 (MenuBar)、選單(Menu)和選單項(MenuItem)三部分組成。 一個選單欄由若干個選單組成,一個選單又由若干

C# winfrom Datagridview控制元件選單

拖拽一個datagridview放在介面,編輯列把下來選單那列ColumnType設定成DataGridViewComboBoxColumn 然後在資料一欄的Items可以寫下來選單的內容也可以後臺程式碼寫 下面是後臺程式碼實現功能 private void dgUserAuthData_Edi

BootStrap-CSS樣式_佈局元件_按鈕選單元件(框上框)

選單按鈕涉及樣式屬性: 1. 基本選單 divider樣式:顯示下劃線效果 2.設定選單文字對齊 text-right樣式:右對齊 text-center:居中 text-left(預設):左對齊 3.帶標題的選單 dropdown-header樣式:設定標題樣式,並

選單選單)實現——PopupMenu

PopupMenu代表彈出式選單,它會在指定元件上彈出PopupMenu,預設情況下,PopupMenu會顯示在該元件的下方或上方。PopupMenu可增加多個選單項,並可為選單項增加子選單。 使用PopupMenu建立選單的步驟非常簡單,只要如下步驟即可。 呼叫new PopupMenu(Context c

Bootstrap 元件-選單

下拉選單 選單div<div class="dropdown">下拉按鈕,id用來給下拉選單指向用的<button type="button" class="btn dropdown-toggle" id="dropdownMenu1" data-togg

Bootstrap元件---選單,多級選單 ,按鈕

下拉選單       選單: ,dropdown(.dropup改變這個是上顯示)   data-toggle="dropdown" (啟用文字處)      .dropdown-menu   .pull-left   .pull-right        按鈕組:.btn

Android快速開發控制元件---導航選單

LQRDropdownLayout 該專案是下拉導航選單,使用非常簡單。基於FilterDropDownMenu-master專案進行封裝,因為原專案的使用太複雜了,光佈局就得幾十行程式碼,如果專案中多處用到下拉選單,那程式碼的冗餘度就太大了,故本佈局對其進行

Select2元件框的使用

angularjs與select2的下拉框使用 頁面引入js檔案 定義下拉框需要展示的資料 下拉框 頁面引入js檔案 <link rel="stylesheet" href="../plugins/selec

Android——(高階控制元件框與搜尋框)

1. 高階控制元件與低階控制元件區別    是否使用介面卡 2. 介面卡種類和作用   2.1 種類       陣列介面卡 ArrayAdapter         new ArrayAdapt

頭部視覺視差(仿QQ控制元件效果)

看到新版QQ空間出來的時候,首頁的下拉的效果比較炫酷,下拉的時候會把整張圖片顯示出來,鬆開手之後就會自己恢復原狀,不說了,上程式碼。 這是效果圖 public class ParallaxListView extends ListView {//關於自定義控制元件//onmeasu

高階查詢元件框聯動(三)

實現下拉框聯動例子. 1.首先在ul中定義省份和城市查詢條件。 <ul id="dynamicCondition" style="display:none;"> <li field="DynamicCondition.province" title="省份"

C# combox控制元件列表模糊查詢

//預設查詢全部,可以選擇取消 private void FrmAddShang_Load(object sender, EventArgs e) { SqlConnection conn = DB.lianjie();

Android第六次——(高階控制元件框與搜尋框)

1. 高階控制元件與低階控制元件區別    是否使用介面卡 2. 介面卡種類和作用   2.1 種類       陣列介面卡 ArrayAdapter         new ArrayAdapter<String>(this,R.layout.actv_sty

自定義控制元件之組合式控制元件 選擇框

自定義控制元件之組合式控制元件 下拉選擇框 文章目錄 自定義控制元件之組合式控制元件 下拉選擇框 零 組合控制元件下載 一 自定義控制元件思路 二 MainActivity核心程式碼 三 activity_main.xml

jQuery UI Autocomplete控制元件列表固定高度

jQuery ui Autocomplete控制元件下拉列表高度預設是自適應的,有多少資料就會加載出來多少行。以下是給下拉列表設定一個預設高度並新增滾動條的解決辦法。 在樣式裡新增以下程式碼 .ui-autocomplete { max-he

android 控制元件 重新整理 phoenix 帶原始碼分析

向納什致敬,鳳凰城永遠的英雄!phoenix Yalantis 致力於提供世界一流的 Android 和 iOS 應用開發服務,因一些 動畫很棒的開源庫為大家所熟知 Phoenix-Android 旨在提供一個簡單的可定製的下拉重新整理功能。 <com

列表聯動總結(AJAX列表聯動簡單示例)

最近發現CSDN上有很多人在詢問 有關聯動的下拉列表的問題,所以在此做以總結,希望還有新的實現方法,這裡介紹三中實現方法,包括一個簡單的AJAX版的聯動.           下拉列表聯動有很多方法可以實現:           1.JavaScript實現,JS實現

PropertyGrid控制元件列表

1 ///<summary> 2 /// 一.自定義一個特性類ListAttribute,提供下拉列表值: 3 ///</summary> 4 publicclass ListAttribute : Attribute 5 { 6 publicstring[]

(總結)Swing元件的使用---文字框(JTextField)與文字區(JTextArea)

一:JTextField的(文字框)使用:  JTextField 是一個輕量級元件,它允許編輯單行文字。 1.JTextField的常用構造方法:   JTextField() 構造一個新的 TextField。  JTextField(int columns

(四十八)c#Winform自定義控制元件-按鈕

前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制元件,於是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 碼雲:https://gitee.com/kwwwvagaa/net_winform_custom_contr