请牛人指教

shuntianyingren 2012-05-24 07:31:23
我现在做个东西,需要把一张图片加载到内存中,然后在显示出来,然后用鼠标点击图片上的点,能获取图片上的点的三维坐标,请提供一个具体的思路,说的详细点!多谢了,我一点图片处理的经验都没有!请大神说些点!
...全文
177 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
古布 2012-05-24
  • 打赏
  • 举报
回复
鼠标移到
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MoveMessageDemo extends JFrame {

public MoveMessageDemo() {
MovableMessagePanel p = new MovableMessagePanel("welcome to java");
p.setFont(new Font("Serif", Font.BOLD, 24));
setLayout(new BorderLayout());
add(p);
}

public static void main(String[] args) {
MoveMessageDemo frame = new MoveMessageDemo();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("MoveMessageDemo");
frame.setSize(200, 100);
frame.pack();
frame.setVisible(true);
}

static class MovableMessagePanel extends JPanel {
private String message = "Welcome to Java";

private int x = 20;

private int y = 20;

public MovableMessagePanel(String s) {
message = s;
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {

x = e.getX();
y = e.getY();
repaint();
}
});
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString(message, x, y);
}
}
}
古布 2012-05-24
  • 打赏
  • 举报
回复
package test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class AppPanel extends JPanel {
// variables and components==========================
private JPanel imageBox;

private JPanel toolPane;

private JLabel counterLabel;

private int counter;

private boolean showWholeImage;

private JButton selectButton;

private JButton breakButton;

private JButton viewImageButton;

private Image[] images;

private Image wholeImage;

private JFileChooser chooser;

// constructor=============================
public AppPanel() {
// initial variables
chooser = new JFileChooser();
images = new BufferedImage[24];
wholeImage = null;
showWholeImage = true;
counter = 0;
setLayout(new BorderLayout());
// initial components
imageBox = new JPanel();
imageBox.setBackground(Color.GRAY);
toolPane = new JPanel();
counterLabel = new JLabel("操作次数:" + counter);
viewImageButton = new JButton("显示原图");
selectButton = new JButton("选择图片");
final Component self = this;
final JLabel lable = new JLabel();
selectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(self)) {
try {
wholeImage = ImageIO.read(chooser.getSelectedFile());
showWholeImage = true;

lable.setIcon(new ImageIcon(wholeImage));

} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "打开文件失败");
}
}
}
});
breakButton = new JButton("打乱图片");
toolPane.add(counterLabel);
toolPane.add(selectButton);
toolPane.add(breakButton);
toolPane.add(viewImageButton);
add(toolPane, BorderLayout.SOUTH);
add(lable);
img =Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource("test/a.jpg"));
lable.setIcon(new ImageIcon(img));
}

private Image img;
public static void main(String[]args) {
JFrame frm = new JFrame("test");
AppPanel appPanel = new AppPanel();
frm.getContentPane().add(appPanel);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(600,400);
frm.setVisible(true);
}
}
古布 2012-05-24
  • 打赏
  • 举报
回复
显示图片
wudi221364 2012-05-24
  • 打赏
  • 举报
回复
太简单了吗,用MouseListener,然后就是getX() getY()之类了的就ok了嘛!
liuhuabai100 2012-05-24
  • 打赏
  • 举报
回复
SWING中的图片读取并显示:
首先选择一个显示图片的东东,例如JLabel
在JLabel中有setIcon(Icon icon) 方法
在看继承Icon的一个类:ImageIcon,它可以由Image得到~~
再看继承Image的一个类:BufferedImage,它就是从文件中读取到内存中
最后,如何得到这个BufferedImage?可以参考javax.imageio.ImageIO中的
read(File input) 方法。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧