**JAVA** GUI圖形介面程式設計-swing的使用
阿新 • • 發佈:2019-02-13
>中間容器的巢狀使用
中間容器的使用
對窗體、窗格、面板的理解。
窗體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(); } }