![JavaSwing的復(fù)雜控件.doc_第1頁](http://file.renrendoc.com/FileRoot1/2020-1/9/82bc922c-f8ec-4446-a9ca-9b15fc18b981/82bc922c-f8ec-4446-a9ca-9b15fc18b9811.gif)
![JavaSwing的復(fù)雜控件.doc_第2頁](http://file.renrendoc.com/FileRoot1/2020-1/9/82bc922c-f8ec-4446-a9ca-9b15fc18b981/82bc922c-f8ec-4446-a9ca-9b15fc18b9812.gif)
![JavaSwing的復(fù)雜控件.doc_第3頁](http://file.renrendoc.com/FileRoot1/2020-1/9/82bc922c-f8ec-4446-a9ca-9b15fc18b981/82bc922c-f8ec-4446-a9ca-9b15fc18b9813.gif)
![JavaSwing的復(fù)雜控件.doc_第4頁](http://file.renrendoc.com/FileRoot1/2020-1/9/82bc922c-f8ec-4446-a9ca-9b15fc18b981/82bc922c-f8ec-4446-a9ca-9b15fc18b9814.gif)
![JavaSwing的復(fù)雜控件.doc_第5頁](http://file.renrendoc.com/FileRoot1/2020-1/9/82bc922c-f8ec-4446-a9ca-9b15fc18b981/82bc922c-f8ec-4446-a9ca-9b15fc18b9815.gif)
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
9.1 JTextArea (文本區(qū))JTextArea 是一個(gè)顯示純文本的多行區(qū)域,它具有換行功能,同時(shí)能也可以借助JScrollPane提供垂直和水平滾動(dòng)的功能。9.1.1 JTextArea的構(gòu)造函數(shù)JTextArea()構(gòu)造新的 TextAreaJTextArea(Documentdoc)構(gòu)造新的 JTextArea,使其具有給定的文檔模型,所有其他參數(shù)均默認(rèn)為 (null, 0, 0)JTextArea(introws,intcolumns)構(gòu)造具有指定行數(shù)和列數(shù)的新的空 TextArea9.1.2 JTextArea的常用方法append(Stringstr) 將給定文本追加到文檔結(jié)尾String getText()返回JTextArea中的內(nèi)容int getLineCount()返回 JTextArea 中當(dāng)前文本所占的行數(shù)setLineWrap(booleanwrap)設(shè)置文本區(qū)的換行策略9.1.3文本區(qū)與文本域下面示例展示了文本區(qū)與文本域的文本顯示特點(diǎn),文本域只能輸入和顯示單行文本,且不能提供換行與滾動(dòng)條功能,而文本區(qū)則既可以提供通過換行的多行顯示,也能通過將文本區(qū)添加到一個(gè)JScrollPane(滾動(dòng)窗格)中實(shí)現(xiàn)垂直和水平的滾動(dòng)功能。示例1package edu.learn;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class JTextAreaExample extends JFrame implements ActionListenerJLabel userLab = new JLabel(發(fā)信人:,JLabel.LEFT);JTextField userText = new JTextField(20);JLabel mailLab = new JLabel(所發(fā)信息:,JLabel.LEFT);JTextField mailText = new JTextField(20);JLabel infoLabe = new JLabel(信息記錄:,JLabel.LEFT);JTextArea txtArea = new JTextArea(5,20);public JTextAreaExample()init();setTitle(文本域練習(xí));setBounds(200,200,250,270);setResizable(false);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void init()setLayout(new FlowLayout(FlowLayout.LEFT);add(userLab);add(userText);add(mailLab);add(mailText);add(infoLabe); /JTextArea不能自己提供滾動(dòng)條,它必須借助于滾動(dòng)窗格JScrollPaneJScrollPane scroll = new JScrollPane(txtArea);txtArea.setEditable(false);add(scroll);mailText.addActionListener(this);public void actionPerformed(ActionEvent e)txtArea.append(userText.getText() + : + mailText.getText()+ n);mailText.setText();public static void main(String args) new JTextAreaExample();運(yùn)行結(jié)果: 9.1.4 文本區(qū)上的DocumentEvent事件JTextArea經(jīng)常觸發(fā)的事件是DocumentEvent事件,DocumentEvent類放在javax.swing.envent包中。當(dāng)文本區(qū)中的文本進(jìn)行編輯操作,使文本區(qū)中的文本內(nèi)容發(fā)生變化時(shí),就會(huì)導(dǎo)致文本區(qū)中的文檔模型中的數(shù)據(jù)發(fā)生變化,從而導(dǎo)致文本區(qū)觸發(fā)DocumentEvent事件。DocumentEvent事件實(shí)現(xiàn)的接口以及接口中的抽象事件處理方法如下:事件類型對(duì)應(yīng)監(jiān)聽器接口接口中的抽象事件方法DocumentEventDocumentListenerpublic void changeUpdate(DocumentEvent e);public void removeUpdate(DocumentEvent e);public void insertUpdate(DocumentEvent e);以下示例展示了文本區(qū)的DocumentEvent(文檔事件)的處理方法,該示例中有兩個(gè)文本區(qū),當(dāng)用戶朝一個(gè)文本區(qū)中輸入文本時(shí),就觸發(fā)DocumentEvent事件中的文檔內(nèi)容改變事件,從而把修改的內(nèi)容添加到另一個(gè)文本區(qū)中。示例2package edu.learn;import java.awt.*;import java.awt.event.*;import javax.swing.event.*;import javax.swing.*;import java.util.*;public class WindowTextSort extends JFrame implements DocumentListener JTextArea text1,text2; WindowTextSort() init(); setLayout(new FlowLayout(); setBounds(120,100,300,240); setResizable(false); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); void init() text1=new JTextArea(5,25); text2=new JTextArea(5,25); add(new JScrollPane(text1); add(new JScrollPane(text2); text1.setLineWrap(true); text2.setLineWrap(true); text2.setEditable(false); (text1.getDocument().addDocumentListener(this);/向文檔注冊(cè)監(jiān)視器 public void changedUpdate(DocumentEvent e) /接口方法 String str=text1.getText(); String s = str.substring(str.length()-1); text2.append(s); public void removeUpdate(DocumentEvent e) /接口方法 changedUpdate(e); public void insertUpdate(DocumentEvent e) /接口方法 changedUpdate(e); public static void main(String args) WindowTextSort win=new WindowTextSort(); win.setTitle(窗口); 運(yùn)行結(jié)果:9.2 JCheckBox(復(fù)選框)JCheckBox復(fù)選框是一個(gè)擁有被選定狀態(tài)和取消選定狀態(tài)的對(duì)象,用戶可以通過點(diǎn)擊復(fù)選框?qū)ο髞砬袚Q其狀態(tài)9.2.1 JCheckBox的構(gòu)造函數(shù)JCheckBox()創(chuàng)建一個(gè)沒有文本、沒有圖標(biāo)并且最初未被選定的復(fù)選框JCheckBox(String name)創(chuàng)建一個(gè)帶文本的、最初未被選定的復(fù)選框JCheckBox(Icon icon)創(chuàng)建有一個(gè)圖標(biāo)、最初未被選定的復(fù)選框JCheckBox(String name,Icon icon)創(chuàng)建帶有指定文本和圖標(biāo)的、最初未選定的復(fù)選框9.2.2 JCheckBox的常用方法setIcon(Icon icon)設(shè)置當(dāng)前復(fù)選框的圖標(biāo)setText(String name)設(shè)置當(dāng)前復(fù)選框的文本String getText()獲得當(dāng)前復(fù)選框的文本boolean isSeleced()獲得當(dāng)前復(fù)選框的是否被選中的狀態(tài),如果被選中則返回true,否則返回false9.2.3 JCheckBox的ItemEvent事件 當(dāng)JCheckBox(復(fù)選框)的選中狀態(tài)由于用戶的鼠標(biāo)點(diǎn)擊而出現(xiàn)改變時(shí),復(fù)選框就會(huì)觸發(fā)ItemEvent事件。其中ItemEvent 對(duì)應(yīng)的監(jiān)聽器接口和抽象方法如下:事件類型對(duì)應(yīng)監(jiān)聽器接口接口中的抽象事件方法ItemEventItemListenerpublic void ItemStateChanged(ItemEvent e);JCheckBox注冊(cè)ItemEvent事件監(jiān)聽器對(duì)象的方法如下:addItemListener(ItemListener listener)注冊(cè)ItemEvent事件監(jiān)聽器對(duì)象removeItemListener(ItemListener listener)移除ItemEvent事件監(jiān)聽器對(duì)象以下是一個(gè)通過多個(gè)復(fù)選框選擇購買電腦附件的示例,每當(dāng)用戶選中或者是取消復(fù)選框狀態(tài)時(shí)就觸發(fā)ItemEvent事件,在該事件中將被選中的復(fù)選框中的內(nèi)容獲取后顯示在下面的文本框中。示例3package edu.learn;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class JCheckBoxExample extends JFrame implements ActionListenerJCheckBox cb1 = new JCheckBox(無限鼠標(biāo));JCheckBox cb2 = new JCheckBox(移動(dòng)硬盤);JCheckBox cb3 = new JCheckBox(U盤);JCheckBox cb4 = new JCheckBox(打印機(jī));JPanel p1 = new JPanel();JLabel label = new JLabel(需要購買的附件:);public JCheckBoxExample()setTitle(復(fù)選框練習(xí));p1.setLayout(new GridLayout(4,1);p1.setBorder(BorderFactory.createTitledBorder(系統(tǒng)退出時(shí));p1.add(cb1); p1.add(cb2); p1.add(cb3); p1.add(cb4);add(p1,BorderLayout.CENTER);add(label,BorderLayout.SOUTH);cb1.addActionListener(this);cb2.addActionListener(this);cb3.addActionListener(this);cb4.addActionListener(this);this.setBounds(200, 200, 300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);public void actionPerformed(ActionEvent e)String s = ;if(cb1.isSelected() = true) s += + cb1.getText();if(cb2.isSelected() = true) s += + cb2.getText();if(cb3.isSelected() = true) s += + cb3.getText();if(cb4.isSelected() = true) s += + cb4.getText();label.setText(需要購買的附件:+s);public static void main(String args)JCheckBoxExample.setDefaultLookAndFeelDecorated(true);JCheckBoxExample frame = new JCheckBoxExample();運(yùn)行結(jié)果:9.3 JRadioButton (單選按鈕)JRadioButton(單選按鈕)與JCheckBox(復(fù)選框)類似,都擁有被選中和未被選中兩種狀態(tài),用戶通過鼠標(biāo)點(diǎn)擊在這兩個(gè)狀態(tài)中進(jìn)行切換。所不同的是復(fù)選框組中每個(gè)對(duì)象狀態(tài)的改變都不影響其它復(fù)選框?qū)ο蟮臓顟B(tài),而在同一組中的單選按鈕則同一時(shí)間只有一個(gè)單選按鈕對(duì)象能處于被選中狀態(tài)。因此單選按鈕在使用時(shí)必須擁有一個(gè)“按鈕組”的控件來將若干個(gè)單選按鈕歸入同一個(gè)組中,例如:ButtonGroup group = new ButtonGroup();JRadioButton radIBM = new JRadioButton(IBM);JRadioButton radToshiba = new JRadioButton(TOSHIBA);JRadioButton radLennvo = new JRadioButton(lenovo);JRadioButton radAcer = new JRadioButton(acer);group.add(radIBM); group.add(radToshiba);group.add(radLennvo);group.add(radAcer);9.3.1 JRadioButton的構(gòu)造函數(shù)JRadioButton()創(chuàng)建一個(gè)初始化為未選擇的單選按鈕,其文本未設(shè)定JRadioButton(Iconicon)創(chuàng)建一個(gè)初始化為未選擇的單選按鈕,其具有指定的圖像但無文本JRadioButton(Iconicon, booleanselected)創(chuàng)建一個(gè)具有指定圖像和選擇狀態(tài)的單選按鈕,但無文本JRadioButton(Stringtext)創(chuàng)建一個(gè)具有指定文本的狀態(tài)為未選擇的單選按鈕JRadioButton(Stringtext, booleanselected)創(chuàng)建一個(gè)具有指定文本和選擇狀態(tài)的單選按鈕JRadioButton(Stringtext, Iconicon)創(chuàng)建一個(gè)具有指定的文本和圖像并初始化為未選擇的單選按鈕JRadioButton(Stringtext, Iconicon, booleanselected)創(chuàng)建一個(gè)具有指定的文本、圖像和選擇狀態(tài)的單選按鈕9.2.2 JRadioButton的常用方法setIcon(Icon icon)設(shè)置單選按鈕的圖標(biāo)setText(String name)設(shè)置單選按鈕的文本String getText()獲得單選按鈕的文本boolean isSeleced()獲得單選按鈕的是否被選中的狀態(tài),如果被選中則返回true,否則返回false9.3.3 JRadioButton的ItemEvent和ActionEvent事件 JRadioButton與JCheckBox相同,當(dāng)用戶改變它們的狀態(tài)時(shí),觸發(fā)的也同樣是ItemEvent事件,不過也可以使用ActionEvent事件來完成用戶對(duì)于單選按鈕的操作事件處理。示例4package edu.learn;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class JRadioButtonExample extends JFrame implements ActionListenerButtonGroup group = new ButtonGroup();JRadioButton radIBM = new JRadioButton(IBM);JRadioButton radToshiba = new JRadioButton(TOSHIBA);JRadioButton radLennvo = new JRadioButton(lenovo);JRadioButton radAcer = new JRadioButton(acer);JLabel label = new JLabel(我選擇的電腦是:);public JRadioButtonExample()setTitle(JRadioButton example);this.setLayout(new GridLayout(5,1);add(radIBM); add(radToshiba);add(radLennvo);add(radAcer);add(label);radIBM.addActionListener(this);radToshiba.addActionListener(this);radLennvo.addActionListener(this);radAcer.addActionListener(this);group.add(radIBM); group.add(radToshiba);group.add(radLennvo);group.add(radAcer);radIBM.setSelected(true);this.setBounds(200, 200, 300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);public void actionPerformed(ActionEvent e)String s = (JRadioButton)e.getSource().getText();label.setText(我選擇的電腦是: + s);public static void main(String args) JRadioButtonExample.setDefaultLookAndFeelDecorated(true);JRadioButtonExample frame = new JRadioButtonExample();運(yùn)行結(jié)果:9.4 JComboBox (組合框)JComboBox (組合框)也叫作下拉列表,叫它組合框是因?yàn)樗袷怯晌谋究蚝土斜砜蚪M合形成的一個(gè)控件,用戶可以通過文本框旁的一個(gè)箭頭按鈕將選項(xiàng)列表打開,選中內(nèi)容后關(guān)閉選項(xiàng)列表,并將信息顯示在文本框中。9.4.1 JComboBox的構(gòu)造函數(shù)JComboBox()創(chuàng)建具有默認(rèn)數(shù)據(jù)模型的 JComboBoxJComboBox(Objectitems)創(chuàng)建包含指定數(shù)組中的元素的 JComboBox9.4.2 JComboBox的常用方法addItem(ObjectanObject)為項(xiàng)列表添加項(xiàng)Object getItemAt(intindex)返回指定索引處的列表項(xiàng)int getItemCount()返回列表中的項(xiàng)數(shù)int getSelectedIndex()返回組合框中當(dāng)前被選中選項(xiàng)的索引,索引的起始值為0Object getSelectedItem()返回組合框中當(dāng)前被選中選項(xiàng)的對(duì)象removeItem(ObjectanObject)從項(xiàng)列表中移除項(xiàng)removeItemAt(intanIndex)移除 anIndex 處的項(xiàng)removeAllItems()從項(xiàng)列表中移除所有項(xiàng)9.4.3 JCheckBox的ItemEvent和ActionListener事件 當(dāng)用戶使用鼠標(biāo)點(diǎn)擊組合框時(shí),組合框會(huì)觸發(fā)ActionListener事件,而當(dāng)用戶從一個(gè)選中一個(gè)選項(xiàng),同時(shí)取消前一個(gè)被選中選項(xiàng)時(shí)則會(huì)觸發(fā)ItemEvent事件。9.5 JList(列表框)多組數(shù)據(jù)項(xiàng)可以在列表框中進(jìn)行同時(shí)顯示,并且允許用戶選擇一個(gè)或多個(gè)項(xiàng)。9.5.1 JList的構(gòu)造函數(shù)JList()構(gòu)造一個(gè)具有空的、只讀模型的 JListJList(ObjectlistData)構(gòu)造一個(gè) JList,使其顯示指定數(shù)組中的元素JList(ListModeldataModel)根據(jù)指定的非 null 模型構(gòu)造一個(gè)顯示元素的 JList使用JList(ObjectlistData)創(chuàng)建的列表框,列表框中的項(xiàng)是靜態(tài)的,不可修改的。因?yàn)镴List控件只提供數(shù)據(jù)項(xiàng)的顯示和提取操作,而不提供數(shù)據(jù)的添加和修改。如果需要?jiǎng)討B(tài)的設(shè)置數(shù)據(jù)項(xiàng)給列表框,就必須使用模型。這很類似與MVC結(jié)構(gòu),即JList提供數(shù)據(jù)的顯示和用戶的交互,而ListModel(模型)則負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和修改。具體如下:經(jīng)常用于JList中進(jìn)行存儲(chǔ)數(shù)據(jù)的模型為DefaultListModel,它用于存儲(chǔ)可變數(shù)據(jù),具體用法如下:ListModelJList顯示交互數(shù)據(jù)存儲(chǔ)和修改DefaultListModel lstModel = new DefaultListModel();JList listType = new JList(lstModel); 9.5.2 JList的常用方法Object getSelectedValue()返回最小的選擇單元索引的值;只選擇了列表中單個(gè)項(xiàng)時(shí),返回所選值。int getSelectedIndex()返回最小的選擇單元索引;只選擇了列表中單個(gè)項(xiàng)時(shí),返回該選擇。ListModel getModel()返回保存由 JList 組件顯示的項(xiàng)列表的數(shù)據(jù)模型setSelectedIndex(intindex)選擇單個(gè)單元setSelectedValue(ObjectanObject, booleanshouldScroll)從列表中選擇指定的對(duì)象9.5.3 ListModel的常用方法add(int index, Object element)在指定index處添加一個(gè)列表項(xiàng)addElement(Object element)在列表末尾追加一個(gè)element列表項(xiàng)Object getItemAt(intindex)返回指定索引處的列表項(xiàng)int getSize()返回列表的長(zhǎng)度remove(int index)移除指定index位置的列表項(xiàng)removeElement(Object obj)移除列表中的對(duì)應(yīng)obj的列表項(xiàng)removeElementAt(int index)移除指定index位置的列表項(xiàng)removeAllElements()移除列表中的所有項(xiàng)9.5.4 JList的ListSelectionEvent事件 當(dāng)用戶選擇列表中的選項(xiàng)使列表選擇值發(fā)生更改時(shí),就會(huì)觸發(fā)ListSelectioEvnet事件。ListSelectioEvnet屬于javax.swing.event包中,其監(jiān)聽器接口和抽象事件方法如下:事件類型對(duì)應(yīng)監(jiān)聽器接口接口中的抽象事件方法ListSelectioEvnetListSelectionListenerpublic void valueChanged(ListSelectionEvent e)JList注冊(cè)ListSelectioEvnet事件監(jiān)聽器對(duì)象的方法如下:addListSelectionListener(ListSelectioEvnet listener)注冊(cè)ItemEvent事件監(jiān)聽器對(duì)象removeListSelectionListener(ListSelectioEvnet listener)移除ItemEvent事件監(jiān)聽器對(duì)象以下示例展示的是一個(gè)購買電腦的過程案例,窗體中首先使用組合框?qū)崿F(xiàn)品牌的選擇,之后根據(jù)品牌在列表框中實(shí)現(xiàn)該品牌各種型號(hào)的設(shè)置。最后用戶選擇型號(hào)后,該電腦品牌和型號(hào)都將顯示在窗體下部的文本框中。示例5package edu.learn;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.awt.*;public class JComboBoxAndJListExample2 extends JFrame implements ItemListener,ListSelectionListenerJComboBox compute = new JComboBox();/定義組合框DefaultListModel lstModel = new DefaultListModel();/定義一個(gè)用于存儲(chǔ)可變數(shù)據(jù)的模型JList listType = new JList(lstModel); /利用模型創(chuàng)建列表框JScrollPane scroll = new JScrollPane(listType); /使用滾動(dòng)面板提供滾動(dòng)條功能JTextField text = new JTextField(您所選擇的電腦:);Object type = E40,E220,x120e,x201i,x1,L412,L420,T420i,T410i,C600-C01B,L600-62R,L700-T10R,C600D-T10B,L700-C07R,L750-T01S,Y470N-IFI,Y470N-ISE,G460AL-ITH(A),Y460C-ITH(灰),G470AH-ITH(深棕色),Y470N-ITH;public JComboBoxAndJListExample2()setTitle(組合框與列表框);compute.addItem(IBM);compute.addItem(TOSHIBA);compute.addItem(lenovo);compute.addItemListener(this); setLayout(new BorderLayout(5,5);add(compute,BorderLayout.NORTH);add(scroll,BorderLayout.CENTER);listType.setFixedCellWidth(150); /設(shè)置列表框的每個(gè)單元的寬度listType.addListSelectionListener(this);add(text,BorderLayout.SOUTH);JList list = new JList();/設(shè)置窗體的大小和位置this.setBounds(200, 200, 400, 220);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/對(duì)應(yīng)ItemListener的事件方法public void itemStateChanged(ItemEvent e)String s = (String)compute.getSelectedItem();/e.getStateChange() = e.SELECTED用于避免兩次的事件觸發(fā)if (s.equals(IBM)& e.getStateChange() = e.SELECTED)lstModel.removeAllElements();for(int i=0;itype0.length;i+)lstModel.addElement(type0i);else if(s.equals(TOSHIBA) & e.getStateChange() = e.SELECTED)lstModel.removeAllElements();for(int i=0;itype1.length;i+)lstModel.addElement(type1i);else if(s.equals(lenovo) & e.getStateChange() = e.SELECTED)lstModel.removeAllElements();for(int i=0;itype2.length;i+)lstModel.addElement(type2i);/對(duì)應(yīng)ListSelectionListener的事件方法public void valueChanged(ListSelectionEvent e)if(e.getValueIsAdjusting() = true) /用于避免兩次的事件觸發(fā)String brand = compute.getSelectedItem().toString();String type = listType.getSelectedValue().toString();text.setText(您所選擇的電腦: + brand + + type);public static void main(String args) /利用默認(rèn)的窗口管理器為窗體實(shí)現(xiàn)新的外觀JComboBoxAndJListExample2.setDefaultLookAndFeelDecorated(true);JComboBoxAndJListExample2 frame = new JComboBoxAndJListExample2();運(yùn)行結(jié)果: 9.6 容器容器分為底層容器和中間容器。底層容器有JFrame,JDialog,它們擁有標(biāo)題欄、菜單欄,是所有控件以及中間容器賴以放置的基本容器。而中間容器是必須被添加到底層容器才能發(fā)揮作用的容器。它們沒有標(biāo)題欄、沒有菜單欄,雖然也能作為容器添加組件,但卻不能獨(dú)立存在。9.6.1 JPanel面板面板是一個(gè)用于放置一個(gè)或多個(gè)組件的中間容器,擁有默認(rèn)的布局(FlowLayout流式布局)。JPanel p = new JPanel();p.add(componet1);p.add(componet2);9.6.2 JScrollPanl 滾動(dòng)窗格滾動(dòng)窗格只可以添加一個(gè)組件,且該組件擁有多行或者多列的數(shù)據(jù)顯示要求。大多數(shù)情況下這樣的組件有JTextArea、JList、JTree、JTable等等。JscrollPane scroll = new JScrollPane(new JTextArea();9.6.3 JSplitPane拆分窗格拆分窗格顧名思義就是把窗體拆分為兩個(gè)部分,每個(gè)部分可以是一個(gè)容器。拆分窗格有兩種兩種類型:水平拆分和垂直拆分。1. 水平拆分splitPane = new JSplitPane(JSplitPane. HORIZONTAL_SPLIT,true);splitPane.setDividerLocation(0.5);splitPane.add(p1,JSplitPane.LEFT);splitPane.add(p2,JSplitPane.RIGHT);2. 垂直拆分splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true);splitPane.setDividerLocation(0.5);splitPane.add(p1,JSplitPane.TOP);splitPane.add(p2,JSplitPane.BOTTOM);示例6package edu.learn;import javax.swing.*;import java.awt.*;public class JSplitPaneExample extends JFrame JPanel p1,p2;JSplitPane splitPane;public JSplitPaneExample()init();setBounds(200, 200, 300, 200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);public void init()setTitle(拆分窗格練習(xí));p1 = new JPanel();p2 = new JPanel();/splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,p1,p2);/水平拆分 /*splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true);splitPane.setDividerLocation(0.5);splitPane.add(p1,JSplitPane.LEFT);splitPane.add(p2,JSplitPane.RIGHT); */垂直拆分splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true);splitPane.setDividerLocation(0.5);splitPane.add(p1,JSplitPane.TOP);splitPane.add(p2,JSplitPane.BOTTOM);add(splitPane,BorderLayout.CENTER);public static void main(String args) new JSplitPaneExample();運(yùn)行結(jié)果: 9.7 JTable(表格)JTable(表格)是以行和列的形式顯示數(shù)據(jù),并允許對(duì)表格中的數(shù)據(jù)進(jìn)行編輯。表格必須與模型一起實(shí)現(xiàn)MVC結(jié)構(gòu),即表格提供內(nèi)容顯示和用戶交互功能,而模型實(shí)現(xiàn)對(duì)數(shù)據(jù)的動(dòng)態(tài)添加和維護(hù)功能。因此,如果創(chuàng)建了不帶有模型的表格,其僅僅只能提供內(nèi)容的顯示和獲取,而不能提供數(shù)據(jù)的動(dòng)態(tài)設(shè)置。9.7.1創(chuàng)建不帶模型的表格1)調(diào)用無參構(gòu)造函數(shù)JTabletable=newJTable();2) 以表頭和表數(shù)據(jù)創(chuàng)建表格Object data = 第1行表數(shù)據(jù),第2行表數(shù)據(jù), , 第N行表數(shù)據(jù);String columnNames =列名1 ,列名2, , 列名N;JTable table = new JTable(data, columnNames);以下示例展示了利用表數(shù)據(jù)和表頭創(chuàng)建不帶模型的表格的方法,示例如下示例7package edu.learn;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class SimpleTableExample extends JFrame public SimpleTableExample() Object data = 0001, 張三, 財(cái)務(wù)處,new GregorianCalendar(1965,10,10),new Double(1700.00), 0002, 李四, 計(jì)算中心,new GregorianCalendar(1987,9,9),new Double(1500.00), 0003, 王二, 收費(fèi)大隊(duì),new GregorianCalendar(1978,12,23),new Double(2000.00), 0004, 無一, 維修部,new GregorianCalendar(1982,10,23),new Double(2900.78), 0005, 小小, 計(jì)財(cái)部,new GregorianCalendar(1976,10,1),new Double(100.00), ; String columnNames = 雇員編號(hào), 雇員姓名,所在部門,出生日期,薪水; /創(chuàng)建表格 JTable table = new JTable(data, columnNames); /設(shè)置關(guān)閉列寬自動(dòng)調(diào)整特性 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); /給表格添加滾動(dòng)條 JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args) SimpleTableExample f = new SimpleTableExample(); f.setSize(500,300); f.setVisible(true); 運(yùn)行結(jié)果:在示例中,由于沒有模型對(duì)數(shù)據(jù)進(jìn)行維護(hù),因此時(shí)間類型不能正確顯示,同時(shí)也不能通過添加方法向表格添加新的數(shù)據(jù)項(xiàng)。9.7.2 創(chuàng)建帶模型的表格利用默認(rèn)的DefaultTableModel作為表格模型,以提供表格中的數(shù)據(jù)添加、刪除操作。Object data = 內(nèi)容1,內(nèi)容2 , ,內(nèi)容3String columnNames列名1 ,列名2, , 列名N;DefaultTableModel model=new DefaultTableModel(null,columnNames);JTable table = new JTable(model); model.addRow(data);示例8package edu.learn;import javax.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲服務(wù)承攬合同三篇
- 管道行業(yè)安全管理工作心得
- 2025年全球及中國丙二醛行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國頭發(fā)護(hù)理用神經(jīng)酰胺行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國DHA微囊粉行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國三維足底掃描系統(tǒng)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球電動(dòng)跨式堆垛機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國介孔二氧化硅微球行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國多相真空萃取機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球豆莢酒店行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年春季學(xué)期學(xué)校德育工作計(jì)劃安排表(完整版)
- 2025年有機(jī)肥行業(yè)發(fā)展趨勢(shì)分析報(bào)告
- 五年級(jí)口算題卡每天100題帶答案
- 2024年全國初中數(shù)學(xué)聯(lián)合競(jìng)賽試題參考答案及評(píng)分標(biāo)準(zhǔn)
- Hadoop大數(shù)據(jù)開發(fā)實(shí)例教程高職PPT完整全套教學(xué)課件
- 企業(yè)中層管理人員測(cè)評(píng)問題
- 人教版高中地理必修一全冊(cè)測(cè)試題(16份含答案)
- 《民航服務(wù)溝通技巧》教案第11課孕婦旅客服務(wù)溝通
- 新東方四級(jí)詞匯-正序版
- 面向機(jī)器人柔順操作的力位精準(zhǔn)控制方法研究共3篇
- 《地下工程測(cè)試技術(shù)》課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論