package zgd;import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.filechooser.FileNameExtensionFilter;public class Bar extends JFrame implements ActionListener{
JScrollPane jsp;
JButton jb;
PainImage pi2;
File dirPath;
JFileChooser chooser;
public Bar(String name){
super(name);
jb=new JButton("打开");
jb.addActionListener(this);
this.setLayout(new BorderLayout());
this.add(jb,BorderLayout.NORTH);
this.setSize(300,400);
this.setVisible(true);
} @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String type=arg0.getActionCommand();
if(type=="打开"){
if(dirPath==null){
chooser=new JFileChooser();
}else
chooser=new JFileChooser(dirPath);
chooser.setDialogTitle("Open JPEG file");
//用来对文件的类型的限定
FileNameExtensionFilter filter = new FileNameExtensionFilter("jpg&png", "jpg","png");
chooser.setFileFilter(filter);
int result = chooser.showOpenDialog(this); //依附于 mainframecon 存在的
if (result == JFileChooser.APPROVE_OPTION) {
dirPath=chooser.getCurrentDirectory();//设定当前打开目录
chooser.setCurrentDirectory(dirPath);
// System.out.print(dirPath.getPath());
String filePath=chooser.getSelectedFile().getPath();//得到所选文件的路径
pi2=new PainImage(new ImageIcon(filePath).getImage());
pi2.setPreferredSize(new Dimension(1400,800));//只有放入这个,使其超过jscrollpane才有用 jsp=new JScrollPane(pi2);
this.add(jsp,BorderLayout.CENTER);
this.setVisible(true);
}
}
}
/*
*
* 此类是用来画背景的
*/
class PainImage extends JPanel {
int P_w=0;
int P_h=0; Image Img=null;
public PainImage(Image img){
this.Img=img;
P_w=Toolkit.getDefaultToolkit().getScreenSize().width;
P_h=Toolkit.getDefaultToolkit().getScreenSize().height;
//所谓Screen 即容器的满额
}
protected void paintComponent(Graphics g) {
// 清屏
super.paintComponent(g);
g.drawImage(Img, 0, 0, P_w, P_h, this);
} }
public static void main (String args[]){
Bar bar=new Bar("示例,示例啦");
}
}我想做到加入第二幅图片的时候,第一幅图片能不显示,可是结果如图所示
我想知道这是为什么???!!
及结局方案
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.filechooser.FileNameExtensionFilter;public class Bar extends JFrame implements ActionListener {
JScrollPane jsp;
JButton jb; PainImage pi2;
File dirPath;
JFileChooser chooser; public Bar(String name) {
super(name); jb = new JButton("打开");
jb.addActionListener(this); this.setLayout(new BorderLayout()); this.add(jb, BorderLayout.NORTH);
this.setSize(300, 400);
this.setVisible(true);
pi2 = new PainImage();
pi2.setPreferredSize(new Dimension(1400, 800));// 只有放入这个,使其超过jscrollpane才有用 jsp = new JScrollPane(pi2);
this.add(jsp, BorderLayout.CENTER);
this.setVisible(true);
} @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String type = arg0.getActionCommand();
if (type == "打开") {
if (dirPath == null) {
chooser = new JFileChooser();
} else
chooser = new JFileChooser(dirPath);
chooser.setDialogTitle("Open JPEG file"); // 用来对文件的类型的限定
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"jpg&png", "jpg", "png");
chooser.setFileFilter(filter);
int result = chooser.showOpenDialog(this); // 依附于 mainframecon 存在的
if (result == JFileChooser.APPROVE_OPTION) {
dirPath = chooser.getCurrentDirectory();// 设定当前打开目录
chooser.setCurrentDirectory(dirPath);
String filePath = chooser.getSelectedFile().getPath();// 得到所选文件的路径
pi2.setImg(new ImageIcon(filePath).getImage());
pi2.updateUI();
}
}
} /*
*
* 此类是用来画背景的
*/
class PainImage extends JPanel { int P_w = 0;
int P_h = 0;
Image Img = null; public PainImage(Image img) {
super();
this.Img = img;
} public PainImage() {
super();
}
protected void paintComponent(Graphics g) {
// 清屏
super.paintComponent(g);
if (Img != null) {
g.drawImage(Img, 0, 0, P_w, P_h, this);
}
}
public void setImg(Image img) {
this.Img = img;
P_w = Toolkit.getDefaultToolkit().getScreenSize().width;
P_h = Toolkit.getDefaultToolkit().getScreenSize().height;
} } public static void main(String args[]) {
Bar bar = new Bar("示例,示例啦"); }}