1. 程式人生 > >**JAVA** GUI圖形介面程式設計-swing的使用

**JAVA** GUI圖形介面程式設計-swing的使用

>中間容器的巢狀使用

 中間容器的使用
 對窗體、窗格、面板的理解。
 窗體Frame是包括放大、關閉按鈕的整個視覺化介面
 窗格Pane是一種對面的分割工具,能夠將潔面按照不同的要求分割成各種形狀
 面板Panel是一種用來儲存空間的空間,向下放入控制元件,向上新增到已經分好的窗格當中
 

>容器的佈局管理

 佈局管理
 FlowLayout流式佈局
 BorderLayout邊界佈局
 GridLayout網格佈局
 CardLayout卡片佈局
 BoxLayout盒式佈局
 GridBagLayout網格包佈局
 佈局是對panel面板的操作因為它是直接儲存控制元件的容器
 


>選單與表格項

 java.swing的選單和表格
 JMenebar選單條
 JMenu選單
 JMenuItem選單項

>swing事件監聽機制(與學習awt時相同)



>程式碼示例:

package useSwing;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import java.awt.*;

import javax.swing.*;
import javax.swing.event.MenuListener;
/**
 * JFrame的應用,直接繼承JFrame類能夠直接使用其中對JFrame進行操作的方法
 * 
 * 中間容器的使用
 * 對窗體、窗格、面板的理解。
 * 窗體Frame是包括放大、關閉按鈕的整個視覺化介面
 * 窗格Pane是一種對面的分割工具,能夠將潔面按照不同的要求分割成各種形狀
 * 面板Panel是一種用來儲存空間的空間,向下放入控制元件,向上新增到已經分好的窗格當中
 * 
 * 佈局管理
 * FlowLayout		流式佈局
 * BorderLayout		邊界佈局
 * GridLayout		網格佈局
 * CardLayout		卡片佈局
 * BoxLayout		盒式佈局
 * GridBagLayout	網格包佈局
 * 佈局是對panel面板的操作因為它是直接儲存控制元件的容器
 * 
 * 事件處理機制
 * 與java.awt學習時的時間處理機制完全相同
 * 
 * java.swing的選單和表格
 * JMenebar選單條
 * JMenu選單
 * JMenuItem選單項
 */

public class extendJFrame extends JFrame{
	
	/**
	 * 當前窗體的建構函式
	 * 對當前窗體進行基本的設定。
	 */
	public extendJFrame(){
		super("MySecondJFrame");
		
		setSize(300, 300);
		setLocation(500, 400);

		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setExtendedState(NORMAL);
		
		init();
		
	}
	
	private void init(){
		Container con = getContentPane();//得到內部的無邊界窗格
		JPanel panel = new JPanel();//建立一個面板物件
		
		
		FlowLayout fl = new FlowLayout(FlowLayout.LEFT,10,10);//元件的位置,元件之間的水平和垂直間距
		
		//屬性gridx,gridy位置,gridwidth,gridheight佔據網格數,anchor方位,fill充滿方式
		GridBagConstraints gbc = new GridBagConstraints();
		GridBagLayout gbl = new GridBagLayout();
		
		BorderLayout bl1 = new BorderLayout(10,10);
		
		CardLayout layout1 = new CardLayout(10,10);//元件與容器邊緣的間距
		
		Box b1 = Box.createHorizontalBox();//建立一個從左到右顯示其元件的 
		Box b2 = Box.createVerticalBox();//建立一個從上到下顯示其元件的 Box

		//panel.setLayout(bl1);
		panel.setLayout(new GridLayout(2,4));
		//panel.setLayout(gbl);
		

		
		JButton butt1 = new JButton("Press Me1");//建立一個按鈕物件
		panel.add(butt1,BorderLayout.CENTER);//新增物件
		con.add(panel);		
		
		JButton butt2 = new JButton("Press Me2");//建立一個按鈕物件
		panel.add(butt2,BorderLayout.EAST);//新增物件
		con.add(panel);		
		
		JButton butt3 = new JButton("Press Me3");//建立一個按鈕物件
		panel.add(butt3,BorderLayout.WEST);//新增物件
		con.add(panel);		
		
		JButton butt4 = new JButton("Press Me4");//建立一個按鈕物件
		panel.add(butt4,BorderLayout.NORTH);//新增物件
		con.add(panel);		
		
		JButton butt5 = new JButton("Press Me5");//建立一個按鈕物件
		panel.add(butt5,BorderLayout.SOUTH);//新增物件
		con.add(panel);
	
/*		JTextArea ta1 = new JTextArea(50,50);
		JScrollPane sp1 = new JScrollPane(ta1);
		con.add(sp1);
		
		JTextArea ta2 = new JTextArea(50,50);
		JSplitPane sp2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,ta2,panel);
		con.add(sp2);
		
		JTabbedPane tp = new JTabbedPane();
		tp.setTabPlacement(int);
		tp.addChangeListener();
*/
		
		
		//事件處理機制的使用
		
		//建立選單
		JMenuBar bar = new JMenuBar();
		setJMenuBar(bar);
		JMenu menu = new JMenu("檔案");
		JMenu menu2 = new JMenu("Edit");
		JMenuItem newf = new JMenuItem("新建");
		newf.setAccelerator(KeyStroke.getKeyStroke("ctrl N"));
		JMenuItem open = new JMenuItem("開啟");
		menu.add(newf);
		menu.add(open);
		
		//JPoputMenu popupMenu = new JPopupMenu();設定彈出選單
		menu.addMenuListener(null);
		
		bar.add(menu);
		
		//表格JTable
		
		//當所有的元件都新增以後,要重新設定一次可見性。
		setVisible(true);
		int rows = 3;
		int cols = 4;
		JTable table = new JTable(rows,cols);
		table.setShowGrid(true);
		table.setGridColor(Color.RED);
		table.setRowHeight(5);


	}
	public static void main(String[]args){
		extendJFrame f=new extendJFrame();
	}

}