如何開啟圖片於JScrollPane? |
尚未結案
|
vespa
一般會員 發表:14 回覆:22 積分:7 註冊:2004-02-13 發送簡訊給我 |
我在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 發送簡訊給我 |
我參考網路上的範例檔案,加入了以下的程式碼
目前圖片已經可以在指定的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
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |