Ⅰ Javaswing圖片處理問題
這是文件處理不是圖片處理吧。。
Ⅱ 我現在在用Java swing做一個圖片管理系統。請問怎樣才能根據本機圖片的絕對路徑把圖片顯示在jpanel中
你可以嘗試下面兩種方法:
獲取JPanel的畫布,用drawImage方法把圖片畫在JPanel上
新建個JLabel,用setIcon方法設置JLabel的圖片,再添加進JPanel
filechooser可以參考一下這段代碼
privatevoidopenImage()
{
JFileChooserjfc=newJFileChooser(".");
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
=newFileNameExtensionFilter("*.png","png");
=newFileNameExtensionFilter("*.jpg","jpg");
=newFileNameExtensionFilter("*.jpeg","jpeg");
jfc.addChoosableFileFilter(filter1);
jfc.addChoosableFileFilter(filter2);
jfc.addChoosableFileFilter(filter3);
jfc.setAcceptAllFileFilterUsed(false);
jfc.setFileFilter(filter1);
intreturnVal=jfc.showOpenDialog(MainFrame.this);
if(returnVal==JFileChooser.APPROVE_OPTION)
{
Filefile=jfc.getSelectedFile();
try{
image=ImageIO.read(file);//image是BufferedImage
}catch(IOExceptione1){
e1.printStackTrace();
}
jl.setIcon(newImageIcon(image.getScaledInstance(jl.getWidth(),jl.getHeight(),Image.SCALE_DEFAULT)));//JLabeljl
}
}
Ⅲ 一個關於java swing 圖片重新載入的問題
總的來說有兩種方案:
使用標准Swing控制項,比如JLabel的setIcon(...)方法;
自己實現一個控制項類,比如繼承JPanel類,重載裡面的paintComponent(Graphics g)方法,將回調參數g強制轉化成Graphics2D,即g2d,然後調用g2d.drawImage(...)方法實現繪制;
P.S.:不管你選擇使用上述哪個方法,使用JAVA對圖片進行操作,推薦使用BufferedImage類。
Ⅳ 用java swing開發一個畫拓撲圖和波形圖的解決方案
iTopoview是專門面向網路拓撲圖領域的界面組件,基於標准版Java(J2SE) Swing和Java2D圖形技術,可在Web applet或GUI應用程序中使用。開發人員無需了解任何圖形技術,通過簡單的數據驅動方式,即可創建出專業高效的網路拓撲圖界面,並且集成了菜單、滑鼠、用戶業務數據、告警等操作, 使用iTopoview可以將網路拓撲圖開發的工作量從傳統的數個人.月縮減到一個星期左右,讓開發人員將重點迅速焦距至客戶業務。
Ⅳ 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 列表選擇的默認數據模型。
DefaultRowSorter<M,I> RowSorter 的一個實現,它圍繞基於網格的數據模型提供排序和過濾操作。
DefaultRowSorter.ModelWrapper<M,I> DefaultRowSorter.ModelWrapper 負責提供由 DefaultRowSorter 進行排序的數據。
DefaultSingleSelectionModel SingleSelectionModel 的一般實現。
FocusManager 從 1.4 focus API 開始,此類已被廢棄。
GrayFilter 一個圖像過濾器,它通過將圖像轉換成灰度級圖像並增亮圖像中的像素來「禁用」圖像。
GroupLayout GroupLayout 是一個 LayoutManager,它將組件按層次分組,以決定它們在 Container 中的位置。
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 顯示對象列表並且允許用戶選擇一個或多個項的組件。
JList.DropLocation TransferHandler.DropLocation 的一個子類,表示 JList 的放置位置 (drop location)。
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 用來顯示和編輯常規二維單元表。
JTable.DropLocation TransferHandler.DropLocation 的一個子類,表示 JTable 的放置位置 (drop location)。
JTextArea JTextArea 是一個顯示純文本的多行區域。
JTextField JTextField 是一個輕量級組件,它允許編輯單行文本。
JTextPane 可以用以圖形方式表示的屬性來標記的文本組件。
JToggleButton 具有兩個狀態的(two-state)按鈕的實現。
JToggleButton.ToggleButtonModel ToggleButton 模型。
JToolBar JToolBar 提供了一個用來顯示常用的 Action 或控制項的組件。
JToolBar.Separator 一個特定於工具欄的分隔符。
JToolTip 用來顯示 Component 的「提示」。
JTree 將分層數據集顯示為輪廓的控制項。
JTree.DropLocation TransferHandler.DropLocation 的一個子類,表示 JTree 的放置位置 (drop location)。
JTree.DynamicUtilTreeNode DynamicUtilTreeNode 可以包裝 vectors/hashtables/arrays/strings 並根據需要創建適當的子樹節點。
JTree.EmptySelectionModel EmptySelectionModel 是一個不允許選擇任何內容的 TreeSelectionModel。
JViewport 用於查看底層信息的「視口」或「觀察孔」。
JWindow JWindow 是一個容器,可以顯示在用戶桌面上的任何位置。
KeyStroke 表示鍵盤或等效輸入設置上的鍵操作的 KeyStroke。
LayoutFocusTraversalPolicy 根據 Component 的大小、位置和方向對其排序的 SortingFocusTraversalPolicy。
LayoutStyle LayoutStyle 提供有關如何確定組件位置的信息。
LookAndFeel 顧名思義,LookAndFeel 封裝了一個外觀。
MenuSelectionManager MenuSelectionManager 擁有菜單層次結構中的選項。
OverlayLayout 要在彼此頂部安排組件的布局管理器。
Popup Popup 用於向用戶顯示 Component,它通常位於特定包含層次結構中所有其他 Component 的頂部。
PopupFactory 顧名思義,PopupFactory 用於獲取 Popup 的實例。
ProgressMonitor 監視某個操作的進度的類。
ProgressMonitorInputStream 監視讀取某些 InputStream 的進度。
RepaintManager 此類管理重繪請求,以最大限度地降低重繪次數。
RowFilter<M,I> RowFilter 用於從模型中過濾條目,使得這些條目不會在視圖中顯示。
RowFilter.Entry<M,I> 一個傳遞給 RowFilter 實例的 Entry 對象,允許過濾器獲取該條目的數據的值,以確定是否應該顯示該條目。
RowSorter<M> RowSorter 提供排序和過濾的基礎。
RowSorter.SortKey SortKey 描述特定列的排序順序。
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 實用方法的集合。
SwingWorker<T,V> 在專用線程中執行長時間 GUI 交互任務的抽象類。
Timer 在指定時間間隔觸發一個或多個 ActionEvent。
ToolTipManager 管理系統中的所有 ToolTips。
TransferHandler 此類用於處理往返於 Swing 組件的 Transferable 的傳輸。
TransferHandler.DropLocation 表示放置的數據 (dropped data) 應該插入的位置。
TransferHandler.TransferSupport 此類封裝剪貼板或拖放傳輸的所有相關詳細信息,並且還允許自定義拖放過程的各方面。
UIDefaults Swing 組件的默認值表。
UIDefaults.LazyInputMap LazyInputMap 將在其 createValue 方法中創建一個 InputMap。
UIDefaults.ProxyLazyValue 此類提供一個可用於延遲載入要創建實例類的 LazyValue 的實現。
UIManager UIManager 管理當前外觀、可用外觀集合、外觀更改時被通知的 PropertyChangeListeners、外觀默認值以及獲取各種默認值的便捷方法。
UIManager.LookAndFeelInfo 為了配置菜單或為了初始應用程序設置而提供關於已安裝的 LookAndFeel 的少量信息。
ViewportLayout JViewport 的默認布局管理器。
枚舉摘要
DropMode 放置模式,用於確定組件在拖放過程中跟蹤和指示放置位置 (drop location) 的方法。
GroupLayout.Alignment ParallelGroup 能夠對齊其子元素的可能方式的枚舉。
JTable.PrintMode 用於列印 JTable 的列印模式。
LayoutStyle.ComponentPlacement ComponentPlacement 是兩個組件相對於彼此的可能放置方式的枚舉。
RowFilter.ComparisonType 由某些默認 RowFilter 支持的可能比較值的枚舉。
SortOrder SortOrder 是可能排序順序的枚舉。
SwingWorker.StateValue state 綁定 (bound) 屬性的值。
異常摘要
指示在用戶系統上不存在請求的外觀管理類的異常。
軟體包 javax.swing 的描述
提供一組「輕量級」(全部是 Java 語言)組件,盡量讓這些組件在所有平台上的工作方式都相同。有關使用這些組件的程序員指南,請參閱 Creating a GUI with JFC/Swing,該內容在 The Java Tutorial 的結尾處。有關其他參考資料,請參閱相關文檔。
Swing 的線程策略
通常 Swing 不是線程安全的。除非另行說明,否則所有 Swing 組件及相關類都必須在事件調度線程上訪問。
典型的 Swing 應用程序執行處理以響應用戶動作所生成的事件。例如,單擊 JButton 通知所有添加到 JButton 的 ActionListener。由於用戶動作所生成的所有事件都在調度線程上指派,所以大部分開發人員不受該限制的影響。
但是,影響存在於構造以及顯示 Swing 的應用程序中。對應用程序的 main 方法或 Applet 中方法的調用不在事件調度線程上調用。因此,構造和顯示應用程序或 applet 時,必須注意要將控制項轉移到事件調度線程。轉移控制項和開始處理 Swing 的首選方法是使用 invokeLater。invokeLater 方法安排 Runnable 在事件調度線程上處理。以下兩個示例都同樣很好地用於轉移控制項和啟動 Swing 應用程序:
public class MyApp implements Runnable {
public void run() {
// Invoked on the event dispatching thread.
// Construct and show GUI.
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new MyApp(args));
}
}
或:
public class MyApp {
MyApp(String[] args) {
// Invoked on the event dispatching thread. Do any initialization
// here.
}
public void show() {
// Show the UI.
}
public static void main(final String[] args) {
// Schele a job for the event-dispatching thread:
// creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MyApp(args).show();
}
});
}
}
此限制也適用於連接到 Swing 組件的模型。例如,如果將 TableModel 連接到 JTable,則 TableModel 應該只在事件調度線程上進行修改。如果修改單獨線程上的模型,就有遭遇異常和可能的顯示損壞的風險。
由於所有事件都是在事件調度線程上傳遞的,所以必須注意事件處理。尤其是,在事件調度線程上執行的長運行時間任務(如網路 io 或計算密集處理)將阻塞事件調度線程調度任何其他線程。事件調度線程受阻塞時,應用程序對用戶輸入完全沒有反應。有關處理 Swing 時執行這種處理的首選方式,請參閱 SwingWorker。
可以在 Swing tutorial 中,尤其是 How to Use Threads 一節找到關於此主題的更多信息。
相關文檔
有關概述、教程、示例、指南和其他文檔的信息,請參閱:
The Swing Connection
The Java Tutorial
Online Training Java Developer ConnectionSM
Java Foundation Classes (JFC) 主頁