『壹』 java里的swing是什麼意思,為什麼取名swing
軟體包 javax.swing
提棗派嫌供一組「輕量級」(全部是 Java 語言)組件,盡量讓這些組件在所有平台上的工作方式都相同。
介面摘要
Action Action 介面提供 ActionListener 介面的一個有用擴展,以便若干控制項訪問相同的功能。
BoundedRangeModel 定義由 Slider 和 ProgressBar 這類組羨型件使用的數據模型。
ButtonModel 按鈕的狀態模型。
CellEditor 此介面定義任何通用編輯器應該能夠實現的方法。
ComboBoxEditor 用於 JComboBox 組件的編輯器組件。
ComboBoxModel 用於組合框的數據模型。
DesktopManager DesktopManager 對象由 DesktopPane 對象所擁有。
Icon 一個小的固定大小圖片,通常用於裝飾組件。
JComboBox.KeySelectionManager 定義 KeySelectionManager 的介面。
ListCellRenderer 標識可用作「橡皮圖章」以繪制 JList 中單元格的組件。
ListModel 此介面定義方法組件(如 JList),這些組件用於獲取列表中每個單元格的值以及列表的長度。
ListSelectionModel 此介面表示任何組件的當前選擇狀態,該組件顯示一個具有穩定索引的值列表。
MenuElement 可以放入菜單中的所有組件都應該實現此介面。
MutableComboBoxModel ComboBoxModel 的可變版本。
Renderer 為負責「呈現」(顯示)值的對象定義需求。
RootPaneContainer 此介面由具有單個 JRootPane 子組件的組件來實現,這些子組件包括:JDialog、JFrame、JWindow、JApplet、JInternalFrame。
Scrollable 為類似 jscrollPane 的滾動容器提供信息的介面。
ScrollPaneConstants 與 JScrollPane 組件一起使用的常數。
SingleSelectionModel 最多支持一個索引選項的模型。
SpinnerModel 對象值的潛在無界序列的模型。
SwingConstants 通常用於在屏幕上定位或定向組件的常量的集合。
UIDefaults.ActiveValue 此類使用戶能夠在默認表中存儲項,該默認表在每次使用某個 getXXX(key) 方法進行查找時創建。
UIDefaults.LazyValue 此類使用戶能夠在默認表中存儲項,該默認表只有在第一次使用某個 getXXX(key) 方法進行查找時才創建。
WindowConstants 用於控制窗口關閉操作的常量。
類摘要
AbstractAction 此類提供 JFC Action 介面的默認實現。
AbstractButton 定義按鈕和菜單項的一般行為。
AbstractCellEditor
AbstractListModel 該數據模型的抽象定義提供一個帶內容的 List。
AbstractSpinnerModel 此類提供 SpinnerModel 介面的 ChangeListener 部分,該凳手介面應該適用於最具體的 SpinnerModel 實現。
ActionMap ActionMap 提供從 Object(稱為鍵 或 Action 名)到 Action 的映射。
BorderFactory 提供標准 Border 對象的工廠類。
Box 使用 BoxLayout 對象作為其布局管理器的一個輕量級容器。
Box.Filler 參與布局但沒有視圖的輕量級組件的實現。
BoxLayout 允許縱向或橫向布置多個組件的布局管理器。
ButtonGroup 此類用於為一組按鈕創建一個多斥(multiple-exclusion)作用域。
CellRendererPane 此類被插入在單元格渲染器與使用它們的組件之間。
ComponentInputMap ComponentInputMap 是與特定 JComponent 相關聯的 InputMap。
DebugGraphics 支持圖形調試的圖形子類。
DefaultBoundedRangeModel BoundedRangeModel 的一般實現。
DefaultButtonModel Button 組件的數據模型的默認實現。
DefaultCellEditor 表單元格和樹單元格的默認編輯器。
DefaultComboBoxModel 組合框的默認模型。
DefaultDesktopManager 此類是 DesktopManager 的實現。
DefaultFocusManager 此類已被廢棄,用 1.4 focus API 取代。
DefaultListCellRenderer 呈現列表中的一個項。
DefaultListCellRenderer.UIResource 實現 UIResource 的 DefaultListCellRenderer 的子類。
DefaultListModel 此類以鬆散方式實現 java.util.Vector API,它實現 1.1.x 版本的 java.util.Vector,沒有 collection 類支持,並且在發生更改時通知 ListDataListener。
DefaultListSelectionModel 列表選擇的默認數據模型。
DefaultSingleSelectionModel SingleSelectionModel 的一般實現。
FocusManager 從 1.4 focus API 開始,此類已被廢棄。
GrayFilter 一個圖像過濾器,它通過將圖像轉換成灰度級圖像並增亮圖像中的像素來「禁用」圖像。
ImageIcon 一個 Icon 介面的實現,它根據 Image 繪制 Icon。
InputMap InputMap 提供輸入事件(目前只使用 KeyStroke)和 Object 之間的綁定。
InputVerifier 此類的用途是通過帶文本欄位的 GUI 幫助客戶端支持流暢的焦點導航。
該 FocusTraversalPolicy 可以有選擇地提供確定 JInternalFrame 初始 Component 的演算法。
JApplet java.applet.Applet 的擴展版,它添加了對 JFC/Swing 組件架構的支持。
JButton "push" 按鈕的實現。
JCheckBox 復選框的實現,復選框是一個可以被選定和取消選定的項,它將其狀態顯示給用戶。
JCheckBoxMenuItem 可以被選定或取消選定的菜單項。
JColorChooser JColorChooser 提供一個用於允許用戶操作和選擇顏色的控制器窗格。
JComboBox 將按鈕或可編輯欄位與下拉列表組合的組件。
JComponent 該類是除頂層容器外所有 Swing 組件的基類。
JDesktopPane 用於創建多文檔界面或虛擬桌面的容器。
JDialog 創建對話框窗口的主要類。
JEditorPane 可編輯各種內容的文本組件。
JFileChooser JFileChooser 為用戶選擇文件提供了一種簡單的機制。
JFormattedTextField JFormattedTextField 擴展了 JTextField,添加了對格式化任意值的支持,以及一旦用戶編輯了文本就檢索特定對象的支持。
JFormattedTextField.AbstractFormatter JFormattedTextField 所使用的 AbstractFormatter 實例,用於處理從 Object 到 String 和從 String 到 Object 的轉換。
JFormattedTextField.AbstractFormatterFactory JFormattedTextField 使用的 AbstractFormatterFactory 實例,用來獲得 AbstractFormatter 實例,依次使用該實例格式化各個值。
JFrame java.awt.Frame 的擴展版本,該版本添加了對 JFC/Swing 組件架構的支持。
JInternalFrame 提供很多本機窗體功能的輕量級對象,這些功能包括拖動、關閉、變成圖標、調整大小、標題顯示和支持菜單欄。
JInternalFrame.JDesktopIcon 此組件表示 JInternalFrame 的圖標化版本。
JLabel 用於短文本字元串或圖像或二者的顯示區。
JLayeredPane JLayeredPane 為 JFC/Swing 容器添加了深度,允許組件在需要時互相重疊。
JList 該組件允許用戶從列表中選擇一個或多個對象。
JMenu 菜單的該實現是一個包含 JMenuItem 的彈出窗口,用戶選擇 JMenuBar 上的項時會顯示該 JMenuItem。
JMenuBar 菜單欄的實現。
JMenuItem 菜單中的項的實現。
JOptionPane JOptionPane 有助於方便地彈出要求用戶提供值或向其發出通知的標准對話框。
JPanel JPanel 是一般輕量級容器。
JPasswordField JPasswordField 是一個輕量級組件,允許編輯一個單行文本,其視圖指示鍵入內容,但不顯示原始字元。
JPopupMenu 彈出菜單的實現,彈出菜單是一個可彈出並顯示一系列選項的小窗口。
JPopupMenu.Separator 彈出與菜單有關的分隔符。
JProgressBar 默認顯示有界區間整數值的組件。
JRadioButton 實現一個單選按鈕,此按鈕項可被選擇或取消選擇,並可為用戶顯示其狀態。
JRadioButtonMenuItem 一個單選按鈕菜單項的實現。
JRootPane 該輕量級容器由 JFrame、JDialog、JWindow、JApplet 和 JInternalFrame 在後台使用。
JScrollBar 滾動條的實現。
JScrollPane 提供輕量級組件的 scrollable 視圖。
JSeparator JSeparator 為實現分隔線提供了一個通用組件 - 通常用作菜單項之間的分隔符,以便將菜單項分成幾個邏輯組。
JSlider 一個讓用戶以圖形方式在有界區間內通過移動滑塊來選擇值的組件。
JSpinner 讓用戶從一個有序序列中選擇一個數字或者一個對象值的單行輸入欄位。
JSpinner.DateEditor 其模型為 SpinnerDateModel 的 JSpinner 編輯器。
JSpinner.DefaultEditor 一個針對非常特殊編輯器的簡單基類,該類在 JFormattedTextField 中顯示模型的當前值的只讀視圖。
JSpinner.ListEditor 其模型為 SpinnerListModel 的 JSpinner 編輯器。
JSpinner.NumberEditor 其模型為 SpinnerNumberModel 的 JSpinner 編輯器。
JSplitPane JSplitPane 用於分隔兩個(只能兩個)Component。
JTabbedPane 一個組件,它允許用戶通過單擊具有給定標題和/或圖標的選項卡,在一組組件之間進行切換。
JTable JTable 用來顯示和編輯規則的二維單元表。
JTextArea JTextArea 是一個顯示純文本的多行區域。
JTextField JTextField 是一個輕量級組件,它允許編輯單行文本。
JTextPane 可以用以圖形方式表示的屬性來標記的文本組件。
JToggleButton 具有兩個狀態的(two-state)按鈕的實現。
JToggleButton.ToggleButtonModel ToggleButton 模型 警告:此類的已序列化對象與以後的 Swing 版本不兼容。
JToolBar JToolBar 提供了一個用來顯示常用的 Action 或控制項的組件。
JToolBar.Separator 一個特定於工具欄的分隔符。
JToolTip 用來顯示 Component 的「提示」。
JTree 將分層數據集顯示為輪廓的控制項。
JTree.DynamicUtilTreeNode DynamicUtilTreeNode 可以包裝 vectors/hashtables/arrays/strings 並根據需要創建適當的子樹節點。
JTree.EmptySelectionModel EmptySelectionModel 是一個不允許選擇任何內容的 TreeSelectionModel。
JViewport 用於查看基礎信息的「視口」或「觀察孔」。
JWindow JWindow 是一個容器,可以顯示在用戶桌面上的任何位置。
KeyStroke 表示鍵盤或等效輸入設置上的鍵操作的 KeyStroke。
LayoutFocusTraversalPolicy 根據 Component 的大小、位置和方向對其排序的 SortingFocusTraversalPolicy。
LookAndFeel 從可插入外觀組件的角度全面展現外觀的特性。
MenuSelectionManager MenuSelectionManager 擁有菜單層次結構中的選項。
OverlayLayout 要在彼此頂部安排組件的布局管理器。
Popup Popup 用於向用戶顯示 Component,它通常位於特定包含層次結構中所有其他 Component 的頂部。
PopupFactory 顧名思義,PopupFactory 用於獲取 Popup 的實例。
ProgressMonitor 監視某個操作的進度的類。
ProgressMonitorInputStream 監視讀取某些 InputStream 的進度。
RepaintManager 此類管理重繪請求,以最大限度地降低重繪次數。
ScrollPaneLayout JScrollPane 使用的布局管理器。
ScrollPaneLayout.UIResource ScrollPaneLayout 的 UI 資源版本。
SizeRequirements 為方便布局管理器,計算組件的有關大小和位置信息。
SizeSequence 一個 SizeSequence 對象,它有效地維護一個包含大小和相應位置的順序列表。
SortingFocusTraversalPolicy 通過對焦點遍歷循環的 Components 按給定 Comparator 排序確定遍歷順序的 FocusTraversalPolicy。
SpinnerDateModel Date 序列的一個 SpinnerModel。
SpinnerListModel 其值由數組或 List 定義的 SpinnerModel 的簡單實現。
SpinnerNumberModel 用於數字序列的 SpinnerModel。
Spring 該 Spring 類的實例將存儲以下三個表示其行為特徵的屬性:minimum、preferred 和 maximum 值。
SpringLayout SpringLayout 根據一組約束布置其相關容器的子組件。
SpringLayout.Constraints Constraints 對象將管理組件大小和位置更改方式的約束存儲在 SpringLayout 控制的容器中。
SwingUtilities Swing 實用方法的集合。
Timer 在指定延遲之後激發一個或多個操作事件。
ToolTipManager 管理系統中的所有 ToolTips。
TransferHandler 此類用於處理往返於 Swing 組件的 Transferable 的傳輸。
UIDefaults Swing 組件的默認值表。
UIDefaults.LazyInputMap LazyInputMap 將在其 createValue 方法中創建一個 InputMap。
UIDefaults.ProxyLazyValue 此類提供一個可用於延遲載入要創建實例類的 LazyValue 的實現。
UIManager 此類跟蹤當前的外觀及其默認設置。
UIManager.LookAndFeelInfo 為了配置菜單或為了初始應用程序設置而提供關於已安裝的 LookAndFeel 的少量信息。
ViewportLayout JViewport 的默認布局管理器。
枚舉摘要
JTable.PrintMode 用於列印 JTable 的列印模式。
異常摘要
指示在用戶系統上不存在請求的外觀管理類的異常。
軟體包 javax.swing 的描述
提供一組「輕量級」(全部是 Java 語言)組件,盡量讓這些組件在所有平台上的工作方式都相同。有關使用這些組件的程序員指南,請參閱 Creating a GUI with JFC/Swing,該內容在《The Java Tutorial》的結尾處。有關其他參考資料,請參閱相關文檔。
『貳』 java的swing組件的使用
Swing是用於圖形用戶界面開發的一個全面解決方案,包括250多個類,在這里不能一一列出。本書僅使用Swing用戶界面。
1.標 簽 2.按 鈕 3.文本域 4.文本區 5.列表框 6.組合框
7.復選框 8.單選按鈕 9.滾動條 10.選項卡 11.對話框 12.菜 單
1.標 簽
標簽類JLabel是用於顯示文字或圖標的簡單組件。JLabel的構造方法包括:
public JLabel()
public JLabel(Icon icon)
public JLabel(Icon icon, int horizontalAlignment)
public JLabel(String text)
public JLabel(String text, Icon icon, int horizontalAlignment)
public JLabel(String text, int horizontalAlignment)
在構造方法中,text指定標簽的文字,icon指定標簽的圖標,horizontalAlignment指定文本或圖標的水平對齊方式。
JLabel實例維護的屬性包括:
表8.3 JLabel的屬性 屬性名
數據類型
訪問
預設值
disabledIcon
Icon
SG
灰色過濾圖標
displayedMnemonic
Int
SG
——
horizontalAlignment
Int
CSG
LEFT
horizontalTextPosition
Int
SG
RIGHT
Icon
Icon
CSG
null
iconTextGap
Int
SG
4個像素
labelFor
Component
SG
null
Text
String
CSG
「」
verticalAlignment
Int
SG
CENTER
verticalTextPosition
int
SG
CENTER
註:在訪問中,C=可在構造時設置/G=獲取方法/S=設置方法
disabledIcon:標簽被禁用時顯示的圖標。
displayedMnemonic:設置LabelFor屬性後顯示的助記符。
horizontalAlignment:標簽內容的水平對齊方式。取值包括:SwingConstants.LEFT、SwingConstants.RIGHT和SwingConstants.CENTER。
horizontalTextPosition:文本相對於圖標的水平位置;與水平對齊方式的有效值相同。
icon:標簽在啟用時顯示的圖標。
iconTextGap:標簽的文本與圖標之間的間隙,以像素點為單位。
labelFor:一個組件,它在標簽的助記符被鍵入時獲得焦點。
Text:標簽顯示的文本。
verticalAlignment:標簽內容的垂直對齊方式。取值包括:SwingConstants.TOP、SwingConstants.BOTTOM和SwingConstants.CENTER。
『叄』 java swing 組件的坐標問題
首先把面板的Layout設為null
例jPanel.setLayout(null);
然後對於單個組件的bounds設為你想要的坐標
例jLabel.setBounds(new Rectangle(100, 100, 100, 40));
其中4個參數分別為組件的左上角橫坐標,縱坐標,橫長和縱寬
jList.setSize(100,50)
『肆』 java的Swing是輕量級組件,輕量級組件是什麼意思
一、輕量級組件是用java代碼畫出來的,這樣具有平台移植性
重量級組件是調用系統的函數畫出來的組件,比如主窗體
一般來說盡量用輕量級的組件,這樣對程序的移植性很好。
一般java.swing包里的組件大部分是輕量級的,java.awt裡面的是重量級的。
swing是由100%純java實現的,swing組件是用java實現的輕量級組件,沒有本地代碼
不依賴操作系統的支持,這是與AWT組件的最大組別。由於AWT組件通過與具體平台的
對等類(peer)實現,因此Swing比AWT組件具有更強的實用性。Swing在不同的
平台上表現一致,並且有能力提供本地窗口系統不支持的其它特性。
二、總的來說就是
重量級組件:對應運行平台必須存在一個對應的組件.
輕量級組件:在一個虛擬的畫布上畫出來的組件(所以swing較慢),所有輕量級組件"最終"要放到重量級組件(jframe,jdialog)中.由於是畫出來所以能做到各種平台上一致的表現.同樣,如果混合重量級組件和輕量級組件容易引起重疊上的沖突.
『伍』 java Swing 編寫需要用的一些常用組件,求代碼~~
這個看你設計成什麼樣子,都有不同的需求,代碼只能參考一下。
package com.hengjun.hjropcs.commons;
import java.awt.Dimension;
import java.awt.Font;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.UIManager;
import com.hengjun.commons.lang.Func1;
import com.hengjun.commons.lang.HJCollectionUtils;
import com.hengjun.commons.swing.DimensionUtility;
import com.hengjun.commons.swing.HJComboBoxUtils;
import com.hengjun.commons.swing.combobox.decorators.SpellComboBoxDecorator;
import com.hengjun.commons.ui.DisplayData;
import com.hengjun.framework.enums.EDataStatus;
import com.hengjun.framework.framework_core.model.BaseModel;
import com.hengjun.framework.framework_core.support.constant.MessageConstants;
import com.hengjun.hjrop.model.dbmodel.RopRegion;
import com.hengjun.hjrop.model.dbmodel.RopStation;
import com.hengjun.hjropcs.cache.CacheRegion;
import com.hengjun.hjropcs.commons.hjcombobox.Builder;
import com.hengjun.hjropcs.commons.hjcombobox.RegionComboBox.CBuilder;
import com.hengjun.hjropcs.core.ui.FullSizeComboBoxUI;
public class HJCommonCombox extends JComboBox{
//批量修改用,=1 帶拼音搜索,批量修改時第一項插入一個new 對象,而不是CommonObject中的對象;
//因為點擊+-號時可以直接更改index=0項的text即可,效率高
public final static int MULTI_MODIFY_WITH_SPELL=1;
//批量修改用,=2 不帶拼音搜索
public final static int MULTI_MODIFY_WITHOUT_SPELL=2;
//active數據,不帶有第一行的empty
public final static int ACTIVE_RECORDS_WITH_SPELL_WITHOUT_EMPTY=3;
//默認的下拉框長度
// public static final int COMBOBOX_MAX_WIDTH = 170;
private boolean isSupportSpell=false;
//產生一個新的數據model,第一條數據為new DisplayData(null,"","")
protected List proceNewModelData(List activeViewForMulti){
if(activeViewForMulti==null || activeViewForMulti.size()==0){
return activeViewForMulti;
}
List ret=new ArrayList(activeViewForMulti);
ret.set(0, new DisplayData(null,"",""));
return ret;
}
public boolean isSupportSpell() {
return isSupportSpell;
}
public void setSRTDimension(){
this.setMaximumSize(DimensionUtility.SRTDimension);
this.setMinimumSize(DimensionUtility.SRTDimension);
}
public void setSRTDimension(Dimension dimension){
this.setMaximumSize(dimension);
this.setMinimumSize(dimension);
}
public void setSupportSpell(boolean isSupportSpell) {
this.isSupportSpell = isSupportSpell;
}
/**
* 默認創建的是含有所有active數據的下拉框
*/
public HJCommonCombox(){
this.setMaximumSize(DimensionUtility.componentDimension);
this.setMinimumSize(DimensionUtility.componentDimension);
}
public HJCommonCombox(Builder builder){
//默認是allActive數據
List model=getActiveModelData();
//如果是批量修改用,基於active數據
if(builder.isMultiModify()){
model=getActiveMultiModelData();
model= proceNewModelData(model);
}
//如果需要所有數據
if(builder.isAll()){
model=getAllModelData();//getActiveModelData;
}
//如果不需要第一項empty值
if(!builder.isWithEmpty()){
HJComboBoxUtils.showList(this, model,1);
}
if(builder.isWithEmpty()){
HJComboBoxUtils.showList(this, model);
}
//如果需要拼音搜索
if(builder.isSupportSpell()){
SpellComboBoxDecorator scb = new SpellComboBoxDecorator(this);
scb.initialize();
}
this.setMaximumSize(DimensionUtility.componentDimension);
this.setMinimumSize(DimensionUtility.componentDimension);
}
//根據filter名稱和builder,返回List
public List<DisplayData> getListData(String filter,Builder builder){
List model=getFilterActiveModelData(filter);
//如果是批量修改用,基於active數據
if(builder.isMultiModify()){
model=getFilterActiveMultiModelData(filter);
model= proceNewModelData(model);
}
//如果需要所有數據
if(builder.isAll()){
model=getFilterAllModelData(filter);//getActiveModelData;
}
//如果不需要第一項empty值
if(!builder.isWithEmpty()){
if (!HJCollectionUtils.isEmpty(model)){
model=model.subList(1,model.size());
}
}else{//需要則直接返回
// HJComboBoxUtils.showList(this, model);
}
return model;
}
public HJCommonCombox(String filter,Builder builder){
//默認是allActive數據
List model=getFilterActiveModelData(filter);
//如果是批量修改用,基於active數據
if(builder.isMultiModify()){
model=getFilterActiveMultiModelData(filter);
model= proceNewModelData(model);
}
//如果需要所有數據
if(builder.isAll()){
model=getFilterAllModelData(filter);//getActiveModelData;
}
//如果不需要第一項empty值
if(!builder.isWithEmpty()){
HJComboBoxUtils.showList(this, model,1);
}else{
HJComboBoxUtils.showList(this, model);
}
//如果需要拼音搜索
if(builder.isSupportSpell()){
SpellComboBoxDecorator scb = new SpellComboBoxDecorator(this);
scb.initialize();
}
this.setMaximumSize(DimensionUtility.componentDimension);
this.setMinimumSize(DimensionUtility.componentDimension);
}
/**
* 當內容比較長的時候,做得處理
*/
public void updateUI() {
setUI(new FullSizeComboBoxUI());
}
/**
* @param isSupportSpell is true;表示支持拼音搜索
*/
public HJCommonCombox(boolean isSupportSpell){
this();
if(isSupportSpell){
this.isSupportSpell=isSupportSpell;
SpellComboBoxDecorator scb = new SpellComboBoxDecorator(this);
scb.initialize();
}
}
/**@deprecated 請使用 HJCommonCombox(Builder builder)模式
* @param isSupportSpell is true;表示支持拼音搜索
*/
public HJCommonCombox(boolean isSupportSpell,boolean isAll){
this(isSupportSpell);
}
public void setSelectedItem(Object o){
ComboBoxModel cm=getModel();
HJComboBoxUtils.setSelectedItem(o, cm);
}
/**
* 全部置空,在批量修改中使用
*/
public static void allSetEmpty(HJCommonCombox cmbBox){
if(cmbBox.getModel().getSize()>0){
cmbBox.setSelectedIndex(0);
cmbBox.setEnabled(false);
DisplayData dd=(DisplayData) cmbBox.getItemAt(0);
dd.setText(MessageConstants.ALL_SET_EMPTY);
JTextField editor = (JTextField)cmbBox.getEditor().getEditorComponent();
editor.setText(MessageConstants.ALL_SET_EMPTY);
}
}
public void setSelectedIndex(int anIndex) {
if(getModel().getSize()>0){
super.setSelectedIndex(anIndex);
}
}
/**
* 全部置空復位
* @param cmbBox
*/
public static void allSetEmptyReset(HJCommonCombox cmbBox){
if(cmbBox.getModel().getSize()>0){
cmbBox.setSelectedIndex(0);
cmbBox.setEnabled(true);
DisplayData dd=(DisplayData) cmbBox.getItemAt(0);
dd.setText("");
// cmbBox.rep
JTextField editor = (JTextField)cmbBox.getEditor().getEditorComponent();
editor.setText("");
}
}
/**
*
* @param collection
* @param converter
* @param allRecods 返回所有的對象
* @param allActiveRecords 返回所有狀態為active的對象
* @return 不需要返回值,修改傳入的2個list即可
*/
public static <T, TResult> void select(Collection<T> collection, Func1<T, TResult> converter,List allRecods,List allActiveRecords) {
BaseModel temp=null;
for (T t : collection) {
temp=(BaseModel)t;
if(temp!=null){
if(EDataStatus.VALID.getKey()==temp.getDataStatus()){
allActiveRecords.add(converter.func(t));
}
allRecods.add(converter.func(t));
}
}
}
public static <T, TResult> void select(Collection<T> collection, Func1<T, TResult> converter,List inputRecods) {
BaseModel temp=null;
for (T t : collection) {
temp=(BaseModel)t;
if(temp!=null){
inputRecods.add(converter.func(t));
}
}
}
public static <T, TResult> void select(Collection<T> collection, Func1<T, TResult> converter,List allRecods,List allActiveRecords,List allActiveRecordsWithMulti) {
BaseModel temp=null;
Object a=null;
for (T t : collection) {
temp=(BaseModel)t;
if(temp!=null){
a=converter.func(t);
if(EDataStatus.VALID.getKey()==temp.getDataStatus()){
allActiveRecords.add(a);
allActiveRecordsWithMulti.add(a);
}
allRecods.add(a);
}
}
}
protected List<DisplayData> getActiveModelData(){
return null;
}
protected List<DisplayData> getAllModelData(){
return null;
}
protected List<DisplayData> getActiveMultiModelData(){
return null;
}
protected List<DisplayData> getFilterActiveModelData(String filter){
return null;
}
protected List<DisplayData> getFilterAllModelData(String filter){
return null;
}
protected List<DisplayData> getFilterActiveMultiModelData(String filter){
return null;
}
}
『陸』 誰能詳細介紹一下java swing里的JTable JTree是怎樣用的以及他們的方法!
Swing是由100%純Java實現的,Swing組件是用Java實現的輕量級( light-weight)組件,沒有本地代碼,不依賴操作系統的支持,這是它與AWT組件的最大區別。由於AWT組件通過與具體平台相關的對等類(Peer)實現,因此Swing比AWT組件具有更強的實用性。Swing在不同的平台上表現一致,並且有能力提供本地窗口系統不支持的其它特性。
Swing採用了一種MVC的設計範式,即"模型-視圖-控制"(Model-View-Controller),其中模型用來保存內容,視圖用來顯示內容,控制器用來控制用戶輸入。
在AWT組件中,由於控制組件外觀的對等類與具體平台相關,使得AWT組件總是只有與本機相關的外觀。Swing使得程序在一個平台上運行時能夠有不同的外觀。用戶可以選擇自己習慣的外觀。
7.1.2 Swing的類層次結構
在javax.swing包中,定義了兩種類型的組件:頂層容器(JFrame,JApplet,JDialog和JWindow)和輕量級組件。Swing組件都是AWT的Container類的直接子類和間接子類。
java.awt.Component
-java.awt.Container
-java.awt.Window
-java.awt.Frame-javax.swing.JFrame
-javax.Dialog-javax.swing.JDialog
-javax.swing.JWindow
-java.awt.Applet-javax.swing.JApplet
-javax.swing.Box
-javax.swing.Jcomponet
swing包是Swing提供的最大包,它包含將近100個類和25個介面,幾乎所有的Swing組件都在swing包中,只有JtableHeader和 JtextComponent是例外,它們分別在swing.table和swing.text中。
swing.border包中定義了事件和事件監聽器類,與AWT的event包類似。它們都包括事件類和監聽器介面。
swing.pending包包含了沒有完全實現的Swing組件。
swing.table包中主要包括了表格組建(JTable)的支持類。
swing.tree同樣是JTree的支持類。
swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用於顯示和編輯文檔的包。
『柒』 java swing組件的優點有哪些
Java Swing組件的復特點:
1、Swing的實現是一個小型制GUI框架,該框架無基本平台依賴性,而在AWT實現中卻有依賴性。
2、javax.swing.JComponent類是所有Swing組件的基類。
3、Swing模型的目標是要遵循模型-視圖-控制器體系結構。模型封裝了數據和狀態的底層表示。
4、javax.swing.plaf包提供了一個介面和許多抽象類用於定義可插入的外觀框架。預設的外觀由javax.swing.plaf.basic包中的類實現。
『捌』 JAVA SWING中如何清除JPanel中的組件 然後添加另外的組件
你可以調用JPanel的remove方法,然後用add添加組件,最後更新重畫就可以了。
一般想要移除和添加一個組件,可能是希望程序在運行時動態的移除和添加,所以你可以為要移除的組件設置一個監聽器。
例如單擊某一個組件就移除這個組件,並且添加另外的組件。例如,當單擊按鈕時,把按鈕移除,添加一個文本框。下面是一個具體的例子:
package konw.win;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class WinTest3
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLayout(new FlowLayout());
JPanel panel = new JPanel();
JButton button = new JButton("change");
panel.add(button);
JTextField f = new JTextField(20);
ActionListener listener = new ChangeListener(button,panel,f);
button.addActionListener(listener);//注冊監聽器
frame.add(panel);
frame.setVisible(true);
}
}
/*監聽器,當單擊按鈕時,移除button按鈕,加入text文本框*/
class ChangeListener implements ActionListener
{
JButton button;
JPanel panel;
JTextField text;
public ChangeListener(JButton button, JPanel panel, JTextField text)
{
super();
this.button = button;
this.panel = panel;
this.text = text;
}
@Override
public void actionPerformed(ActionEvent e)
{
if("change".equals(e.getActionCommand()))
{
panel.remove(button);
panel.add(text);
panel.updateUI();
panel.repaint();
}
}
}
需要特別注意的是移除和添加組件之後,記得重畫組件。
『玖』 有關Java Swing動態增加組件
效果圖
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
//本類繼承自JFrame實現了ActionListener介面
{
JPaneljpc;//存放組件的面板
JScrollPanejsp;//滾動面板
JButtonjbAdd,jbRemove,jbReset;//增加,刪除按鈕
intindex=1;//開始的字元
//構造函數
publicDemoFrame1(){
jpc=newJPanel();
jpc.setLayout(newBoxLayout(jpc,BoxLayout.Y_AXIS));//盒子布局.從上到下
jsp=newJScrollPane(jpc,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(jsp);
jbAdd=newJButton("增加");
jbAdd.addActionListener(this);
jbRemove=newJButton("刪除");
jbRemove.addActionListener(this);
jbReset=newJButton("重置");
jbReset.addActionListener(this);
JPaneljps=newJPanel();
jps.add(jbAdd);
jps.add(jbRemove);
jps.add(jbReset);
add(jps,BorderLayout.SOUTH);
setTitle("增刪組件");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300,220);//大小
setLocationRelativeTo(null);//居中
}
//main函數
publicstaticvoidmain(String[]args){
newDemoFrame1().setVisible(true);//初始化並可見
}
@Override
publicvoidactionPerformed(ActionEvente){
JButtonjb=(JButton)e.getSource();
if(jb==jbAdd){//當點擊添加按鈕時
jpc.add(newMyJPanel(index));//添加1個自己定義的面板組件
index++;//自加1
myUpdateUI();//刷新界面
}elseif(jb==jbRemove){//當點擊刪除按鈕時
if(jpc.getComponentCount()>0){//得到jpc里的MyJPanel的組件數量
jpc.remove(jpc.getComponentCount()-1);//刪除末尾的一個組件,
index-=1;
myUpdateUI();
}
}elseif(jb==jbReset){
for(inti=0;i<jpc.getComponentCount();i++){
MyJPanelmjp=(MyJPanel)jpc.getComponent(i);
//也就是說取值,可以根據文本框所在的位置來取
System.out.println("第"+(i+1)+"個文本框的值是"+mjp.getJTFValue());
mjp.setJTFValue("");//清空,重置
System.out.println("第"+(i+1)+"個文本框的值已清空重置");
}
}
}
//刷新界面函數
privatevoidmyUpdateUI(){
SwingUtilities.updateComponentTreeUI(this);//添加或刪除組件後,更新窗口
JScrollBarjsb=jsp.getVerticalScrollBar();//得到垂直滾動條
jsb.setValue(jsb.getMaximum());//把滾動條位置設置到最下面
}
}
//自定義一個JPanle類
classMyJPanelextendsJPanel{
publicJTextFieldjtf;
publicMyJPanel(intindex){
JLabeljl=newJLabel("字元"+index);
jtf=newJTextField(15);
add(jl);
add(jtf);
}
//獲取文本框的值
publicStringgetJTFValue(){
returnjtf.getText();
}
//設置文本框的值
publicvoidsetJTFValue(Stringvalue){
jtf.setText(value);
}
}