请教一个swing问题 如果图象没有装载完毕,那就可能显示空白。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么能判断图像没有装载完毕? 给试试这样做,在我机器上测试通过的:import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.beans.*;import java.io.*;public class Test extends JFrame { JFileChooser chooser = new JFileChooser(); ImagePreviewer previewer = new ImagePreviewer(); public Test() { super("Accessory Components"); Container contentPane = getContentPane(); JButton button = new JButton("Select A File"); contentPane.setLayout(new FlowLayout()); contentPane.add(button); setAccessoryComponent(); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { chooser.showOpenDialog(null); } }); } private void setAccessoryComponent() { JPanel previewPanel = new JPanel(); previewPanel.setLayout(new BorderLayout()); previewPanel.add(new JLabel("Image Previewer", SwingConstants.CENTER), BorderLayout.NORTH); previewPanel.add(previewer, BorderLayout.CENTER); previewer.setPreferredSize(new Dimension(200, 0)); previewer.setBorder(BorderFactory.createEtchedBorder()); chooser.setAccessory(previewPanel); new ImagePreviewerAccessoryAdapter(chooser, previewer); } public static void main(String a[]) { JFrame f = new Test(); f.setBounds(300, 300, 300, 75); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosed(WindowEvent e) { System.exit(0); } }); }}class ImagePreviewerAccessoryAdapter { public ImagePreviewerAccessoryAdapter( JFileChooser chooser, final ImagePreviewer previewer) { chooser.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { if (e.getPropertyName().equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) { if(e.getNewValue() != null) previewer.update((File)e.getNewValue()); } } }); }}class ImagePreviewer extends JComponent { private ImageIcon icon; public void update(File file) { Dimension size = getSize(); Insets insets = getInsets(); icon = new ImageIcon(file.getPath()); icon.setImage(icon.getImage().getScaledInstance( size.width - insets.left - insets.right, size.height - insets.top - insets.bottom, Image.SCALE_SMOOTH)); if (isShowing()) { repaint(); } } public void paintComponent(Graphics g) { Insets insets = getInsets(); super.paintComponent(g); if (icon != null) icon.paintIcon(this, g, insets.left, insets.top); }} 为什么内部类不能有static成员? java问题急急 ServerSocket的问题 java 小程序可不可以打包成jar文件?? 调试一个显示图片的程序 jdk中能编译的文件,为什么在jbuilder中就不能编译了呢?谢谢给位高手! JFieldDialog不支持鼠标多选文件?? 新手上路:导入包的问题,总是报错,why??? 我2000下的swing中文都显示成方块 怎么解决 java反射出错,求助 一个不会的人,想学JAVA java或是jsp怎么连接LDAP,并对LDAP数据进行操作,急,在线等~~~~~~分数好说
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;public class Test extends JFrame {
JFileChooser chooser = new JFileChooser();
ImagePreviewer previewer = new ImagePreviewer(); public Test() {
super("Accessory Components"); Container contentPane = getContentPane();
JButton button = new JButton("Select A File"); contentPane.setLayout(new FlowLayout());
contentPane.add(button); setAccessoryComponent(); button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
chooser.showOpenDialog(null);
}
});
} private void setAccessoryComponent() {
JPanel previewPanel = new JPanel(); previewPanel.setLayout(new BorderLayout());
previewPanel.add(new JLabel("Image Previewer",
SwingConstants.CENTER),
BorderLayout.NORTH); previewPanel.add(previewer, BorderLayout.CENTER); previewer.setPreferredSize(new Dimension(200, 0));
previewer.setBorder(BorderFactory.createEtchedBorder()); chooser.setAccessory(previewPanel); new ImagePreviewerAccessoryAdapter(chooser, previewer);
} public static void main(String a[]) {
JFrame f = new Test();
f.setBounds(300, 300, 300, 75);
f.setVisible(true); f.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
}
}class ImagePreviewerAccessoryAdapter {
public ImagePreviewerAccessoryAdapter(
JFileChooser chooser,
final ImagePreviewer previewer) {
chooser.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
if (e.getPropertyName().equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) {
if(e.getNewValue() != null)
previewer.update((File)e.getNewValue());
}
}
});
}
}class ImagePreviewer extends JComponent {
private ImageIcon icon; public void update(File file) {
Dimension size = getSize();
Insets insets = getInsets(); icon = new ImageIcon(file.getPath()); icon.setImage(icon.getImage().getScaledInstance(
size.width - insets.left - insets.right,
size.height - insets.top - insets.bottom,
Image.SCALE_SMOOTH)); if (isShowing()) {
repaint();
}
} public void paintComponent(Graphics g) {
Insets insets = getInsets(); super.paintComponent(g); if (icon != null)
icon.paintIcon(this, g, insets.left, insets.top);
}
}