全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1331
推到 Plurk!
推到 Facebook!

如何開啟圖片於JScrollPane?

尚未結案
vespa
一般會員


發表:14
回覆:22
積分:7
註冊:2004-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-04 12:03:45 IP:61.229.xxx.xxx 未訂閱
我在JFrame視窗內加入了兩個JScrollPane, 我想要在指定的JScrollPane內,開啟所選擇的圖片。 我架構已經大概寫出來了,不過在最重要的打開圖片程式碼的部分遇到了困難 麻煩大家了,謝謝... import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.image.*; public class Frame extends JFrame { MenuBar _menubar =new MenuBar(); //宣告功能表列變數 Menu mnuFile1 = new Menu("檔案"); //建立檔案功能表 MenuItem itmOpen1= new MenuItem("開啟圖片一"); //建立開啟圖片一功能項 MenuItem itmOpen2= new MenuItem("開啟圖片二"); //建立開啟圖片二功能項 MenuItem itmExit = new MenuItem("結束"); //建立結束功能項 FileDialog dialog; //宣告檔案對話方塊變數 JPanel contentPane; JScrollPane jScrollPane1 = new JScrollPane(); JScrollPane jScrollPane2 = new JScrollPane(); JLabel jLabel1 = new JLabel(); JLabel jLabel2 = new JLabel(); //Construct the frame public Frame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(null); _menubar.add(mnuFile1); //加入檔案功能表 mnuFile1.add(itmOpen1); //加入開啟圖片一到檔案功能表 mnuFile1.add(itmOpen2); //加入開啟圖片二到檔案功能表 mnuFile1.add(itmExit); //加入結束到檔案功能表 setMenuBar(_menubar); //設定視窗功能表列 dialog = new FileDialog(this, "開啟圖片"); //建立對話方塊 this.setSize(new Dimension(400, 300)); //size of JFrame this.setTitle("SD Frame"); jScrollPane1.setBounds(new Rectangle(50, 50, 130, 140)); jScrollPane2.setBounds(new Rectangle(200, 50, 130, 140)); jLabel1.setText("圖片一"); jLabel2.setText("圖片二"); itmOpen1.addActionListener(new Frame_itmOpen1_actionAdapter(this)); itmOpen2.addActionListener(new Frame_itmOpen2_actionAdapter(this)); itmExit.addActionListener(new Frame_itmExit_actionAdapter(this)); jScrollPane1.getViewport().add(jLabel1, null); jScrollPane2.getViewport().add(jLabel2, null); contentPane.add(jScrollPane1, null); contentPane.add(jScrollPane2, null); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } void itmOpen1_actionPerformed(ActionEvent e) { dialog.setVisible(true); //顯示對話方塊 } void itmOpen2_actionPerformed(ActionEvent e) { dialog.setVisible(true); //顯示對話方塊 } void itmExit_actionPerformed(ActionEvent e) { System.exit(0); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); Frame _frame = new Frame(); //Validate frames that have preset sizes //Pack frames that have useful preferred size info, e.g. from their layout _frame.validate(); //Center the window Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = _frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } _frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); _frame.setVisible(true); } catch(Exception e) { e.printStackTrace(); } } } class Frame_itmOpen1_actionAdapter implements java.awt.event.ActionListener { Frame adaptee; Frame_itmOpen1_actionAdapter(Frame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.itmOpen1_actionPerformed(e); } } class Frame_itmOpen2_actionAdapter implements java.awt.event.ActionListener { Frame adaptee; Frame_itmOpen2_actionAdapter(Frame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.itmOpen2_actionPerformed(e); } } class Frame_itmExit_actionAdapter implements java.awt.event.ActionListener { Frame adaptee; Frame_itmExit_actionAdapter(Frame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.itmExit_actionPerformed(e); } }
vespa
一般會員


發表:14
回覆:22
積分:7
註冊:2004-02-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-06 10:52:29 IP:61.229.xxx.xxx 未訂閱
我參考網路上的範例檔案,加入了以下的程式碼 目前圖片已經可以在指定的JScrollPane開啟 不過不知為何檔案都得重複點選兩次圖才可以順利跑出來? public void loadImage(){ FileDialog dlg = new FileDialog(this, "Choose Image", FileDialog.LOAD); //set current directory if(dir != null){ dlg.setDirectory(dir); } dlg.setVisible(true); //get image name and path String imgFile = dlg.getDirectory() dlg.getFile(); dir = dlg.getDirectory(); //create image using filename Toolkit tk = Toolkit.getDefaultToolkit(); m = tk.getImage(imgFile); ImageIcon tempIcon1=new ImageIcon(m); iconimg1=tempIcon1.getImage(); jLabel1.setIcon(tempIcon1); } 發表人 - vespa 於 2004/04/06 10:53:59
系統時間:2024-05-09 0:15:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!