版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Java語言程序設計
第八章swing圖形用戶界面
(GUI)編程講授人:傅曉陽教授本章課程綱要Swing高級編程事件處理組件與布局√DavidFu本課程綱要布局管理器
swing組件概述
組件與容器
√
組件與布局DavidFu組件與容器圖形用戶界面(GUI)數據的圖形顯示形式友好的交互方式簡化計算機軟件的學習過程GUI組件重量級組件------AWT輕量級組件------Swing,SWT,JFace,jigloo…DavidFu組件與容器早期版本的GUI組件所在的包:java.awt圖形用戶界面(GUI)可以通過鍵盤或鼠標來響應用戶的操作。抽象窗口工具包(AWT)是一組Java類,此組Java類允許創(chuàng)建圖形用戶界面(GUI)。與平臺相關性較強DavidFu組件與容器SwingGUI組件所在的包:javax.swingSwing組件的平臺相關性較小(lightweight)Java1.2引入稱為Swing的新的GUI組件庫。
Swing包括javax.swing包及其子包。盡管Swing獨立于AWT,但它是依照基本的AWT類實現的。每個swing組件都由MVC三個部分組成
DavidFu本課程綱要布局管理器
swing組件概述√
組件與容器組件與布局DavidFu
swing組件繼承關系框圖
DavidFu頂層容器和中間容器頂層容器類主要包括:JApplet類:小應用程序主要用于設計嵌入到網頁的程序模塊,通過網頁瀏覽器運行,實現一個小功能JFrame類:窗體框架主要實現一個帶邊界框架的windows標準的圖形用戶界面。JDialog類:對話框窗口,通常將窗體框架作為父窗口,創(chuàng)建對話框子窗口。對話框分為模式對話框和非模式對話框。
DavidFu頂層容器和中間容器中間容器面板(JPanel)滾動窗格(JScrollPane)分體窗格(JSplitPane)選項卡窗格(JTabbedPane)工具條(JToolBar)
DavidFu頂層容器和中間容器中間容器面板(JPanel)滾動窗格(JScrollPane)分體窗格(JSplitPane)選項卡窗格(JTabbedPane)工具條(JToolBar)
DavidFuJLabel標簽組件標簽組件用于顯示非編輯文本信息或者圖標等圖片信息javax.swing.Jlabel的三個構造方法為:publicJlabel(Stringtext)publicJlabel(Iconimage)publicJlabel(Stringtext,Iconimage,int
horizontalAlignment)DavidFuJLabel標簽組件VoidsetText(Stringtext)設置標簽文本信息。StringgetText()獲取標簽文本信息。VoidsetIcon(Iconicon)設置圖標標簽。IcongetIcon()獲取標簽上的圖標。VoidsetHorisonalAlignment(intalignment)設置水平對齊方式。VoidsetVerticalAlignment(intalignment)設置垂直對齊方式。VoidsetToolTipText(Stringtext)設置標簽提示信息,當將鼠標指針在標簽上停留片刻后,會出現一個標簽的提示信息。DavidFu文本框(JTextField)文本框組件用于輸入單行文本信息JTextField()JTextField(intcolumns)JTextField(Stringtext)JTextField(String
text,intcolumns)DavidFuJButton按鈕JButton通常是用來觸發(fā)某項命令功能組件Jbutton的主要構造方法為:publicJbutton(Stringtext)publicJbutton(Iconicon)publicJbutton(Stringtext,Iconicon)參數text指定按鈕的功能文本信息,使用參數icon指定圖標作為按鈕的功能信息DavidFuJRadioButton單選框JRadioButton是單選按鈕組件
JRadioButton單選框的主要構造方法為:PublicJRadioButton(Iconicon)PublicJRadioButton(Icon
icon,booleanselected)PublicJRadioButton(Stringtext)PublicJRadioButton(Stringtextbooleanselected)PublicJRadioButton(String
text,Iconicon)PublicJRadioButton(String
text,Iconicon,booleanselected)DavidFuJCheckBox復選框復選框JcheckBox的主要構造方法為:publicJCheckBox(Iconicon)publicJCheckBox(Iconicon,Booleanselected)publicJCheckBox(String
text,Iconicon)publicJCheckBox(Stringtext)publicJCheckBox(Stringtext,Booleanselected)publicJCheckBox(String
text,Iconicon,Booleanselected)DavidFu按鈕的主要成員方法VoiddoClick()在程序中使用該方法代替鼠標點擊按鈕的動作StringgetActionCommand()獲取按鈕的動作命令,主要用于命令按鈕VoidsetActionCommand(StringactionCommand)設置命令按鈕的動作命令字符串booleanisSelected()判斷選擇按鈕是否選中voidsetSelected(booleanselected)設置按鈕的狀態(tài)VoidsetHorizonalAlignment(intalignment)設置按鈕上文本和圖標的水平對齊方式VoidsetVerticalAlignment(intalignment)設置按鈕上的文本和圖標的垂直對齊方式DavidFuJTextAreaJTextArea文本區(qū)與JTextField文本框的不同在于JTextArea可以編輯多行文本,而JTextField文本框只能編輯一行文本JtextArea的主要構造方法為:PublicJtextArea()PublicJtextArea(String
text,introws,intcolumns)PublicJtextArea(introws,intcolumns)DavidFuJScrollPane文本區(qū)沒有自動滾屏的功能,當輸入文本超出文本區(qū)范圍時,需要將文本區(qū)添加到滾動窗格中,才能實現滾動瀏覽更多文本的功能滾動窗格JscrollPane
的主要構造方法為:publicJscrollPane(Componentc)其中,參數c是指定需要加入滾動條功能的組件,例如文本區(qū)。具體用法如下:
JTextArea
jTextarea=newJTextArea(5,15);
JScrollPanesp=newJScrollPane(jTextarea);DavidFuJList列表框可以顯示一系列的列表項,并可以從中選擇一項或多項。列表框不僅可以存放字符串項,也可以存放任何類型的對象。用戶可以對列表框中的項目進行添加和刪除。列表框的構造方法為:publicJlist(ListModel
dataModel)publicJlist(Object[]listData)publicJlist(Vector<?>listData)
DavidFuJCombBox組合框(JComboBox)可以從下拉式的列表框中選取其中的列表項類JComboBox中的方法getSelectedIndex()返回當前被選中的項setMaximumRowCount(n)設置最多顯示列表項的項數滾動條(Scrollbar)會自動加上參見例題TestComponentDavidFu本課程綱要布局管理器
√
swing組件概述
組件與容器組件與布局DavidFu布局管理器常用的布局管理器為:流式布局(FlowLayout)方位布局(BorderLayout)網格布局(GridLayout)網格塊布局(GridBagLayout)卡片布局(CardLayout)盒式布局(BoxLayout)
DavidFuswing容器默認布局方式容器種類默認布局方式javax.swing.JAppletBorderLayout方位布局Javax.swingJFrameBorderLayout方位布局Javax.swing.JDialogBorderLayout方位布局Javax.swing.JpanelFlowLayout流式布局DavidFu流式布局FlowLayout流式布局的特點是按照由左向右、由上向下的順序排列組件FlowLayout類的構造方法為:(1)publicFlowLayout()(2)publicFlowLayout(intalign)(3)publicFlowLayout(intalign,int
hgap,int
vgap)DavidFu流式布局FlowLayoutDavidFu方位布局BorderLayout方位布局可以將容器分為5個區(qū)域:北區(qū)、南區(qū)、東區(qū)、西區(qū)和中區(qū)。這五個區(qū)域只能安排5個組件,分為上北下南,左東右西。BorderLayout將根據容器大小對組件進行布局。北區(qū)和南區(qū)組件可以在水平方向上進行拉伸;東區(qū)和西區(qū)組件可以在垂直方向上進行拉伸;中區(qū)組件在水平和垂直方向上都可以進行拉伸,從而填充所有剩余空間。BorderLayout類的構造方法為:publicBorderLayout()publicBorderLayout(int
hgap,int
vgap)
DavidFu方位布局BorderLayoutDavidFu網格布局GridLayout網格布局將容器分成若干尺寸大小相等的單元格。用戶可以將每個組件布局到每個單元格中,組件的大小受到單元格大小的限制。網格布局GridLayout類的構造方法為:publicGridLayout()publicGridLayout(introws,intcols)publicGridLayout(int
rows,int
cols,int
hgap,int
vgap)DavidFu網格布局GridLayoutDavidFu卡片布局CardLayout卡片布局管理器(CardLayout)設置的容器可以布局多個組件,但這些組件都是疊加到一起,仿佛一幅疊加到一起的“撲克牌”,每次只能看到一個組件的內容。
CardLayout類的構造方法為:publicCardLayout()publicCardLayout(int
hap,int
vgap)DavidFu卡片布局CardLayoutDavidFu箱式布局BoxLayoutBoxLayout類可以設置多個組件沿水平和垂直方向排列,好像港口中的“集裝箱”排列一樣,因此稱為箱式布局。對于箱式布局,容器大小發(fā)生變化時,組件所占用的空間不會發(fā)生改變,當組件的寬度超出了容器的寬度或高度時,組件也不會換行或換列,而是沿著原來的方向保持“鋼性”排列BoxLayout類的構造方法為:PublicBoxLayout(Containerc,intaxis)DavidFu箱式布局BoxLayoutDavidFu本章課程綱要Swing高級編程事件處理√組件與布局DavidFu本課程綱要鼠標事件處理
點擊事件處理java事件處理模型
√
事件處理鍵盤和焦點事件DavidFujava事件處理模型事件處理模型由三個基本要素組成:事件源:能夠產生事件響應的容器或組件對象,如文本框、按鈕等。事件對象:由事件源自動產生的事件類對象,封裝了事件的相關信息。事件監(jiān)聽器:實現了監(jiān)聽器接口的類,該類具體實現了監(jiān)聽器接口中的抽象方法,從而實現了對事件的處理響應。
DavidFujava事件處理模型DavidFu常用事件源與事件類對應表事件類說明對應事件源ActionEvent動作事件,比如通常按下按鈕,雙擊列表項或選中一個菜單項時,就會生成此事件。JButtonJList,JMenu,JTextField等AdjustmentEvent調節(jié)事件,比如移動滾動條等JScrollBar等ComponentEvent組件事件,比如移動組件或改變組件大小JComponent繼承的組件,如JButton等FocusEvent焦點事件,比如獲得或失去焦點JComponent繼承的組件DavidFu常用事件源與事件類對應表ItemEvent事項事件,比如菜單、復選框中各項選中狀態(tài)的變化JMenu,JList,JComboBox等KeyEvent鍵盤事件,比如鍵盤輸入鍵盤MouseEvent鼠標事件,比如點擊鼠標左鍵鼠標MouseMotionEvent鼠標移動事件,比如移動鼠標鼠標WindowEvent窗口事件,比如關閉窗口JFrameDavidFu常用事件監(jiān)聽器接口以及適配器類事件監(jiān)聽器接口方法名稱對應適配器類ActionListeneractionPerformed無AdjustmentListeneradjustmentValueChanged無ComponentListenercomponentHidden,componentMoved,componentResized,componentShownComponentAdapterFocusListenerfocusGained,focusLostFocusAdapterItemListeneritemStateChanged無DavidFu常用事件監(jiān)聽器接口以及適配器類KeyListenerkeyPressed,keyReleased,keyTypedKeyAdapterMouseListenermouseCliked,mouseEntered,mouseExited,mousePressed,mouseReleasedMouseAdapterMouseMotionListenermouseDragged,mouseMovedMouseMotionAdapterWindowListenerwindowActivated,windowClosed,windowClosing,windowDeactivated,windowIconfied,windowDeIconfied,windowOpenedWindowAdapterDavidFu本課程綱要鼠標事件處理
點擊事件處理√
java事件處理模型事件處理鍵盤、焦點事件和窗口事件DavidFu點擊事件處理機制事件監(jiān)聽器一個事件源能響應哪些事件,響應事件的處理方法由事件監(jiān)聽器完成。在開發(fā)過程中需要完成兩件事:(1)向事件源注冊事件監(jiān)聽器
button.addActionListener(this);在運行過程中,事件監(jiān)聽器一直監(jiān)視事件源button,一旦用戶單擊了事件源,事件監(jiān)聽器將創(chuàng)建一個單擊事件類ActionEvent類的對象。(2)實現事件處理方法將該事件類對象作為參數傳遞到事件處理方法中DavidFu點擊事件處理機制Java最新的事件處理方法是基于授權事件模型監(jiān)聽器對象屬于一個事件類的實例,這個類實現了一個特殊的接口,名為“監(jiān)聽器接口”事件源將在發(fā)生事件時向所有注冊的監(jiān)聽器發(fā)送事件對象。監(jiān)聽器對象使用事件對象中的信息來確定它們對事件的響應。DavidFu點擊事件處理機制創(chuàng)建事件監(jiān)聽器類,即創(chuàng)建類實現事件監(jiān)聽器接口。并向事件源注冊事件監(jiān)聽器(事件監(jiān)聽器類的對象)用戶操作事件源時,java產生事件對象。事件源將事件對象傳遞給事件監(jiān)聽器事件監(jiān)聽器根據事件對象的種類,調用相應事件處理方法進行事件處理。DavidFu點擊事件處理機制點擊事件處理的三種編程形式:將本類實現為事件監(jiān)聽器,參見例題10-7單獨建立事件監(jiān)聽器類,參見程序例題10-8
使用匿名內部類處理點擊事件,參見程序例題10-9
DavidFu本課程綱要鼠標事件處理√
點擊事件處理java事件處理模型事件處理鍵盤、焦點事件和窗口事件DavidFu鼠標事件處理-MouseEvent
鼠標事件處理的監(jiān)聽器鼠標事件監(jiān)聽器(MouseListener)鼠標移動事件監(jiān)聽器(MouseMotionListener)鼠標滾輪事件監(jiān)聽器(MouseWheelListener)。
DavidFu鼠標事件監(jiān)聽器(MouseListener)
鼠標事件監(jiān)聽器主要處理鼠標點擊動作以及鼠標與組件容器之間的作用,其接口中的成員方法定義如下:publicvoidmouseClicked(MouseEvente)publicvoidmousePressed(MouseEvente)publicvoidmouseReleased(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)將鼠標事件監(jiān)聽器注冊到某個事件源上,可以使用組件或容器的成員方法:publicvoidaddMouseListener(MouseListenerml)DavidFu鼠標事件監(jiān)聽器(MouseListener)
MouseEvent類的常用方法為:publicPointgetPoint()publicint
getX()publicint
getY()publicint
getClickedCount()DavidFuMouseMotionListener鼠標移動事件監(jiān)聽器鼠標移動監(jiān)聽器接口的成員方法定義為:publicvoidmouseDragged(MouseEvente)publicvoidmouseMoved(MouseEvente)將鼠標移動事件監(jiān)聽器注冊到事件源組件上,可以使用組件的成員方法:publicvoidaddMouseMotionListener(MouseMotionListener
mml)DavidFuMouseWheelListener鼠標滾輪事件監(jiān)聽器鼠標滾輪事件監(jiān)聽器主要處理鼠標滾輪事件,其接口中的成員方法為:publicvoidmouseWheelMoved(MouseWheelEvente);將鼠標滾輪事件監(jiān)聽器注冊到事件源上,可以使用組件或容器的成員方法:publicvoidaddMouseWheelListener(MouseWheelListener
mwl)DavidFuMouseWheelListener成員方法如下:publicPointgetPoint()publicint
getX()publicint
getY()publicint
getWheelRotation()DavidFu鼠標事件適配器MouseAdapter處理鼠標點擊事件publicvoidmouseClicked(MouseEvente){}處理按下鼠標過程事件publicvoidmousePressed(MouseEvente){}處理松開鼠標過程事件publicvoidmouseReleased(MouseEvente){}處理鼠標進入組件的事件publicvoidmouseEntered(MouseEvente){}處理鼠標離開組件的事件publicvoidmouseExited(MouseEvente){}DavidFu鼠標事件適配器MouseAdapterMouseMotionAdapter抽象類實現了鼠標移動和拖動的相關事件的兩個方法publicvoidmouseDragged(MouseEvente){}publicvoidmouseMoved(MouseEvente){}參見例題10-10
DavidFu本課程綱要鼠標事件處理
點擊事件處理java事件處理模型事件處理鍵盤、焦點事件和窗口事件√DavidFuKeyEvent鍵盤事件監(jiān)聽器接口KeyListener
publicvoidkeyType(KeyEvente);publicvoidKeyPressed(KeyEvente);publicvoidKeyReleased(KeyEvente);將鍵盤事件監(jiān)聽器與界面上的組件綁定到一起,其組件的成員方法為:publicvoidaddKeyListener(KeyListener
kl)KeyEvent類的常用成員方法如下:publicchargetKeyChar()publicstaticStringgetKeyText()DavidFuFocusListener處理獲得鍵盤焦點事件publicvoidfocusGained(FocusEvent
fe)處理失去鍵盤焦點事件publicvoidfocusLost(FocusEvent
fe)參見例題10-11DavidFu窗口事件WindowEvent窗口事件監(jiān)聽器主要處理與窗口打開、關閉以及激活等過程相關的事件。窗口事件監(jiān)聽器接口WindowListener的抽象方法如下:(1)publicvoidwindowActivate(windowEvente)(2)publicvoidwindowClosing(windowEvente)(3)publicvoidwindowClosed(windowEvente)(4)publicvoidwindowIconified(windowEvente)(5)publicvoidwindowDeIconified(windowEvente)(6)publicvoidwindowDeactivate(windowEvente)(7)publicvoidwindowOpened(windowEvente)
參見例題10-12DavidFu本章課程綱要Swing高級編程√事件處理組件與布局DavidFu本課程綱要JTree樹組件
JTable表格組件
JMenu菜單組件√
Swing高級編程多文檔界面DavidFuJMenu菜單組件DavidFu建立普通菜單的步驟創(chuàng)建菜單欄(JMenuBar)對象JMenuBar
myMenu=newJMenuBar();向窗口中添加菜單欄JFrame和JApplet容器包含一個設置菜單欄的方法setJMenuBar(),通過該方法可以將窗口設置成菜單窗口創(chuàng)建下拉菜單(JMenu)對象JMenu
fileMenu=newJMenu(“文件(F)”);根據特定符號設置菜單助記符使用JMenu成員方法setMnemonic()設置菜單助記符menu.setMnemonic(KeyEvent.VK_F);將菜單添加到菜單欄中
menuBar.add(menu);DavidFu建立普通菜單的步驟創(chuàng)建菜單項對象通過JMenuItem、JCheckBoxMenuItem和JRadioButtonMenuItem類的構造方法創(chuàng)建菜單項JMenuItem
menuItem=newJMenuItem("新建文件");JRadioButtonMenuItem
rbMenuItem=newJRadioButtonMenuItem("添加文件");JCheckBoxMenuItem
cbMenuItem=newJCheckBoxMenuItem("文本編輯");將菜單項添加到下拉菜單中menu.add(rbMenuItem);DavidFuJTablejavax.swing.JTable類提供了一個顯示二維數據的表格組件表格通常由表頭和表格組成,在表格中列的寬度可以調整,甚至列可以重新排列左右順序。JTable類構造表格組件的方式如下:調用無參構造函數.
JTabletable=newJTable();以表頭和表數據創(chuàng)建表格.
Object[][]cellData={{"row1-col1","row1-col2"},{"row2-col1","row2-col2"}};
String[]columnNames={"col1","col2"};
JTabletable=newJTable(cellData,columnNames);DavidFu本課程綱要JTree樹組件
JTable表格組件√
JMenu菜單組件Swing高級編程多文檔界面DavidFuJTable
以表頭和表數據創(chuàng)建表格,并且讓表單元格不可改String[]headers={"表頭一","表頭二","表頭三"};
finalObject[][]data={{"呂布","男",newInteger(25),newBoolean(false)},{"張飛","男",newInteger(30),newBoolean(false)}};DefaultTableModelmodel=newDefaultTableModel(cellData,headers){publicboolean
isCellEditable(introw,intcolumn){
returnfalse;
}
};table=newJTable(model);DavidFu本課程綱要JTree樹組件√
JTable表格組件
JMenu菜單組件Swing高級編程多文檔界面DavidFuJTreeJavax.swing.JTree類提供了樹組件的功能,可以方便的顯示多層次數據,比如windows文件瀏覽器中的文件列表就是由樹狀結構實現的DavidFuJTreeDefaultMutableTreeNode類提供了創(chuàng)建樹上節(jié)點的構造方法:DefaultMutableTreeNode
rootNode=newDefaultMutableTreeNode("運動");樹組件可以觸發(fā)TreeSelectionEvent事件,通過樹組件對象調用注冊監(jiān)聽器的方法來注冊樹組件的事件監(jiān)聽器:addTreeSelectionListener(TreeSelectionListener
tsl)DavidFuJTree當鼠標點擊樹上的節(jié)點時,系統將自動創(chuàng)建TreeSelectionEvent對象,并將該對象傳遞到監(jiān)聽器接口TreeSelectionListener的成員方法valueChanged(TreeSelectionEvente)中,通過該成員方法處理樹節(jié)點相關信息。樹中特定的節(jié)點可以由TreePath對象標識,通過TreePath對象獲得當前節(jié)點的路徑信息。使用getLastSelectedPathComponent()方法獲取選中的節(jié)點。參見例題10-15DavidFu本課程綱要JTree樹組件
JTable表格組件
JMenu菜單組件Swing高級編程多文檔界面√DavidFu多文檔界面用于實現多文檔界面的兩個主要的類分別是javax.swing.JDesktopPanejavax.swing.JInternalFrame類DavidFu設計多文檔界面的步驟
通過getContentPane()方法獲取JFrame窗體的底層面板。創(chuàng)建JDesktopPane桌面面板對象,并將該對象組件添加到JFrame窗體的底層面板上。在相關的事件處理方法中,創(chuàng)建JInternalFrame內部框架組件對象,并在該組件對象的ContentPane中添加相關組件或容器,構成子窗口組件。將子窗口組件添加到桌面面板上,由桌面面板組件統一管理多個子窗口DavidFuJDesktopPane類的主要成員方法
JInternalFrame[]getAllFrames()
返回桌面中當前顯示的所有JInternalFrames。
JInternalFrame[]getAllFramesInLayer(int
layer)
返回桌面指定層中所顯示的所有子窗口。
DesktopManagergetDesktopManager()
返回處理特定于桌面UI操作的DesktopManger。
intgetDragMode()
獲取桌面窗格當前使用的“拖動樣式”。
JInte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簡易房屋加固維修合同
- 展覽合作履約保證協議書
- 土地租賃居間合同2024年
- 2024年紅磚買賣合同范本
- 2024年軟件開發(fā)工程項目居間合同協議
- 派遣合同法律風險防控
- 建筑安裝工程安全合同書模板
- 標準建筑施工合同書格式
- 婚禮慶典合作服務合同范本
- 2024二手設備買賣協議書
- 江蘇省中等職業(yè)學校學業(yè)水平考試語文卷含答案
- 售后服務保障方案3篇
- 2025屆江蘇省南通市海安市海安高級中學物理高三上期中聯考試題含解析
- 2024-2030年全球辣椒市場投資潛力與未來運營模式分析研究報告
- 保潔員安全保證書
- 2024年天津市專業(yè)技術人員繼續(xù)教育網公需課答案
- 期中測試卷-2024-2025學年統編版語文四年級上冊
- 公司解散清算的法律意見書、債權處理法律意見書
- 立冬節(jié)氣介紹立冬傳統習俗氣象物候起居養(yǎng)生課件
- 2024-2030年中國電子戰(zhàn)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
評論
0/150
提交評論