当第一次打开图片时,主窗体大小变成(0,0),而后打开的窗体虽然大小改变但不是正确大小,图片也不会自动居中显示!
package _class.p4;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;class DrawFrame extends JFrame
{
String path;
DrawPane p;
JMenuBar bar=new JMenuBar();
JMenu menu=new JMenu("File");
JMenuItem open=new JMenuItem("Open",KeyEvent.VK_O);
JMenuItem close=new JMenuItem("Close",KeyEvent.VK_C);
JMenuItem exit=new JMenuItem("Exit",KeyEvent.VK_X);
JFileChooser fc=new JFileChooser();
DrawFrame(String title)
{
super(title);
setDefaultCloseOperation(3);
menu.setMnemonic(KeyEvent.VK_F);
fc.setCurrentDirectory(new File("."));
menu.add(open);
menu.add(close);
menu.addSeparator();
menu.add(exit);
open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fc.showOpenDialog(DrawFrame.this);
File f=fc.getSelectedFile();
path=f.toString();
resize(p.imgWidth,p.imgHeight);
p.setPicture(path);
//validate();
}
});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
bar.add(menu);
setJMenuBar(bar);
p=new DrawPane();
getContentPane().setLayout(new FlowLayout());
getContentPane().add(new JScrollPane(p));
setSize(200,200);
//setResizable(false);
setVisible(true);
}
public static void main(String[] args)
{
DrawFrame f=new DrawFrame("Pretty");
}
}class DrawPane extends JPanel
{
Image img;
ImageIcon imgPool;
JLabel pool=new JLabel();
public int imgWidth,imgHeight;
DrawPane()
{
add(pool);
}
public void setPicture(String p)
{
img=Toolkit.getDefaultToolkit().getImage(p);
imgPool=new ImageIcon(img);
imgWidth=imgPool.getIconWidth();
imgHeight=imgPool.getIconHeight();
System.out.println(imgWidth);
System.out.println(imgHeight);
pool.setIcon(imgPool);
}
}
package _class.p4;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;class DrawFrame extends JFrame
{
String path;
DrawPane p;
JMenuBar bar=new JMenuBar();
JMenu menu=new JMenu("File");
JMenuItem open=new JMenuItem("Open",KeyEvent.VK_O);
JMenuItem close=new JMenuItem("Close",KeyEvent.VK_C);
JMenuItem exit=new JMenuItem("Exit",KeyEvent.VK_X);
JFileChooser fc=new JFileChooser();
DrawFrame(String title)
{
super(title);
setDefaultCloseOperation(3);
menu.setMnemonic(KeyEvent.VK_F);
fc.setCurrentDirectory(new File("."));
menu.add(open);
menu.add(close);
menu.addSeparator();
menu.add(exit);
open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fc.showOpenDialog(DrawFrame.this);
File f=fc.getSelectedFile();
path=f.toString();
resize(p.imgWidth,p.imgHeight);
p.setPicture(path);
//validate();
}
});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
bar.add(menu);
setJMenuBar(bar);
p=new DrawPane();
getContentPane().setLayout(new FlowLayout());
getContentPane().add(new JScrollPane(p));
setSize(200,200);
//setResizable(false);
setVisible(true);
}
public static void main(String[] args)
{
DrawFrame f=new DrawFrame("Pretty");
}
}class DrawPane extends JPanel
{
Image img;
ImageIcon imgPool;
JLabel pool=new JLabel();
public int imgWidth,imgHeight;
DrawPane()
{
add(pool);
}
public void setPicture(String p)
{
img=Toolkit.getDefaultToolkit().getImage(p);
imgPool=new ImageIcon(img);
imgWidth=imgPool.getIconWidth();
imgHeight=imgPool.getIconHeight();
System.out.println(imgWidth);
System.out.println(imgHeight);
pool.setIcon(imgPool);
}
}
解决方案 »
- java的io中的文件关闭问题!
- 关于JDO PersistenceManager.getObjectById 的问题
- 在Java游戏中如何给游戏加一个欢迎界面
- 花了75刀买了个 Whizlabs Suite for java 1.5的 正确率只有50% 感觉考的挺难的,真题也是这么难吗?考过scjp的朋友请进来指点下。
- 这个问题不知道发哪``扔这里问问```关于CSDN生成静态页面``
- 偶,真不知道这段代码为什么是这样呀
- 简单的问题,SWING里怎么实现按钮关闭窗口,在线等
- 求助java中取得当前计算机日期的方法!!
- 500分寻求一递归算法(急):测试成功后马上给分
- linux中安装j2sdk
- 小问题:请各位帮忙解决哈!!!
- 一个简单的线程问题,类似计时器
resize(p.imgWidth, p.imgHeight);
validate();先p.setPicture(path);不然p.imgWidth, p.imgHeight还未初始化,默认为0,
另外resize的宽度将包括边框和菜单的宽度,所以显示不全图片,这个再查查看吧,不是很清楚