问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA~怎么把1个图放在正中间。。。

发布网友 发布时间:2022-04-30 02:28

我来回答

1个回答

热心网友 时间:2022-06-29 07:47

//滚动滚轮进行放大缩小。
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class ScaleImageTest extends JFrame {

public ScaleImageTest() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(500, 400);
Image image = Toolkit.getDefaultToolkit().getImage("disk.jpg");//TODO:改成你自己的图片。
panel = new ScaleImagePanel(image, 1);
this.add(panel, BorderLayout.CENTER);
this.addMouseWheelListener(new MouseWheelListener() {//TODO:改成你自己期望的事件*。
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
int rotation = e.getWheelRotation();
System.out.println(rotation);
double newpro=panel.getProportion()+INC*rotation;
if(newpro<ScaleImagePanel.MIN_PRO||
newpro>ScaleImagePanel.MAX_PRO)
return;
panel.setProportion(newpro);
}
});
}

private static final double INC = 0.25;
private ScaleImagePanel panel;

public static final class ScaleImagePanel extends JComponent {

public ScaleImagePanel(Image image, int proportion) {
this.setImage(image);
this.setProportion(proportion);
}

public double getProportion() {
return proportion;
}

public void setProportion(double proportion) {
if (proportion < MIN_PRO || proportion > MAX_PRO)
throw new IllegalArgumentException("Proportion must be in [ "
+ MIN_PRO + ", " + MAX_PRO + "]");
this.proportion = proportion;
this.validate();
this.repaint();
}

public Image getImage() {
return image;
}

public void setImage(Image image) {
this.image = image;
}

@Override
public Dimension getPreferredSize() {
return new Dimension((int) (image.getWidth(this) * proportion),
(int) (image.getHeight(this) * proportion));
}

@Override
protected void paintComponent(Graphics g) {
Dimension size = getSize();
Dimension presize = getPreferredSize();
int x = (size.width - presize.width) / 2;
int y = (size.height - presize.height) / 2;
g.drawImage(image, x, y, presize.width, presize.height, this);
}

private double proportion = 1;
private Image image;

private static final double MAX_PRO = 8;
private static final double MIN_PRO = 0.25;
}

/**
* @param args
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new ScaleImageTest().setVisible(true);
}
});
}

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? panel控件的显示不起作用 eplan p8 2.0能画3D图吗,怎么画 为什么我的Eplan Pro Panel 2.1 3D导入时圆形变成多边行 我的EPLAN Pro Panel2.1sp1里的报表类型里没有设备接线图,像F05 F10 F11等都没有啊,有谁能解释。 oxygentec propanel mk ii 调色台 好不好用 EPLAN PRO PANEL 2.1SP1与eplan_p8.v2.1的区别在那儿?那位了解? EPLAN PRO PANEL 2.9能打开eplan p8的项目吗 oxygentec propanel怎么拆卸保养 十二生肖里哪个生肖最独树一帜? 为什么安装eplan pro panel 2.6时提示c盘空间会不足 eplan pro panel实例入门怎么样 十二生肖猜内优外患独树一帜是什么肖 金鸡独立是什么生肖 金鸡独立,在十二生肖中代表什么生肖或者意思? 金鸡独立代表什么生肖? 独树一帜代表什么生肖 独树一帜是什么动物?? 独树一帜指的是什么生肖 独树一帜是指什么生肖 汽车维修的分类 surface pro3怎么安装中文 surface pro3怎么把系统语言设置成中文 微博社交广告开户流程是怎样的?还有对品牌的推广有什么扶植呢? 微博营销怎么申请号 刚注册了新浪微博,怎么作推广啊? 那朋友知道灌南县青华园顺丰电话 灌南清华园顺丰快递的号码多少 粉丝通怎么开户? iphone11promax照片尺寸? 文玩灯笼果的打磨方法? 东北的野玫瑰是桂花吗? 野生灯笼果你吃过吗? 灯笼果小怎么才能变大 黄金的颜色都有哪些 黄金有几种颜色 建行信用卡逾期三个月银行会起诉吗? 建行信用卡逾期两个月还能用吗 棚组词有哪些词语 棚组词,用棚字怎么组词 棚的组词有哪些