社区
Java SE
帖子详情
高分求swing中怎么样实现图片的伸缩
hxchawk_jcc
2003-11-30 05:11:03
高分求swing中怎么样实现图片的伸缩,并且要求图片大时能在1个pane中显示,有上下左右scrollbar.
...全文
50
7
打赏
收藏
高分求swing中怎么样实现图片的伸缩
高分求swing中怎么样实现图片的伸缩,并且要求图片大时能在1个pane中显示,有上下左右scrollbar.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
binbin2000
2003-12-01
打赏
举报
回复
注意看jdk中带的原码。
icebound1
2003-12-01
打赏
举报
回复
mark
hxchawk_jcc
2003-12-01
打赏
举报
回复
怎样把jScrollPane1 中的边筐去掉呀,缩小的话显示边筐很难看的
longbaduo
2003-11-30
打赏
举报
回复
学习中...
zengruicfan
2003-11-30
打赏
举报
回复
学习中~
现在我有源代码~以后看懂了再告诉你
xjffj
2003-11-30
打赏
举报
回复
以下是我修改后的代码。
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;
import java.awt.event.*;
import javax.swing.event.*;
public class TestImage
extends JFrame {
Image image1 = Toolkit.getDefaultToolkit().getImage(
"E:\\相片\\618017.jpeg");
// Image image2 = Toolkit.getDefaultToolkit().getImage(
// "D:\\airport\\images\\plane1.jpg");
// Image image2 = Toolkit.getDefaultToolkit().getImage(
// "D:\\airport\\images\\airB.gif");
JLabel lbl_peirihiteyi = new JLabel();
JLabel lbl_peri = new JLabel();
JLabel lbl_periseteyi = new JLabel();
JSlider sld_peri = new JSlider();
JTextField txt_peri = new JTextField();
JToggleButton btn_cancel = new JToggleButton();
JScrollPane jScrollPane1 = new JScrollPane();
DrawPicturePanel custom_pane = new DrawPicturePanel();
public TestImage() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
sld_peri.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
double peri = sld_peri.getValue()/10.0;
txt_peri.setText("" + peri);
//peri = peri/10.0;
System.out.println("changed-----------");
custom_pane = new DrawPicturePanel( (int)(320 * peri), (int)(40 * peri));
jScrollPane1.setViewportView(custom_pane);
}
}
);
}
private void jbInit() throws Exception {
lbl_peirihiteyi.setFont(new java.awt.Font("Dialog", 0, 16));
lbl_peirihiteyi.setVerifyInputWhenFocusTarget(true);
lbl_peirihiteyi.setText("倍率指定");
lbl_peirihiteyi.setBounds(new Rectangle(48, 368, 75, 39));
sld_peri.setMajorTickSpacing(1);
sld_peri.setValue(10);
sld_peri.setMaximum(12);
sld_peri.setMinimum(8);
sld_peri.setMinorTickSpacing(0);
sld_peri.setPaintLabels(false);
sld_peri.setPaintTicks(true);
sld_peri.setBorder(null);
sld_peri.setMinimumSize(new Dimension(36, 40));
sld_peri.setOpaque(true);
sld_peri.setBounds(new Rectangle(126, 376, 113, 28));
lbl_periseteyi.setEnabled(true);
lbl_periseteyi.setFont(new java.awt.Font("Dialog", 0, 16));
lbl_periseteyi.setText("倍率设定");
lbl_periseteyi.setBounds(new Rectangle(246, 382, 67, 15));
txt_peri.setText("1.0");
txt_peri.setBounds(new Rectangle(319, 380, 55, 22));
btn_cancel.setText("消去");
btn_cancel.setBounds(new Rectangle(327, 414, 72, 40));
lbl_peri.setFont(new java.awt.Font("Dialog", 0, 16));
lbl_peri.setText("倍");
lbl_peri.setVerticalAlignment(SwingConstants.CENTER);
lbl_peri.setBounds(new Rectangle(388, 379, 41, 26));
this.setResizable(false);
jScrollPane1.setBorder(null);
//jScrollPane1.getViewport().setBackground(Color.lightGray);
//jScrollPane1.setAlignmentX( (float) 0.5);
jScrollPane1.setBounds(new Rectangle(40, 40, 320, 320));
jScrollPane1.setViewportView(custom_pane);
//jScrollPane1.setVerticalScrollBarPolicy(1);
this.getContentPane().add(jScrollPane1, null);
this.getContentPane().add(lbl_peirihiteyi, null);
this.getContentPane().add(sld_peri, null);
this.getContentPane().add(btn_cancel, null);
this.getContentPane().add(lbl_periseteyi, null);
this.getContentPane().add(txt_peri, null);
this.getContentPane().add(lbl_peri, null);
this.setTitle("");
this.getContentPane().setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
class DrawPicturePanel
extends JScrollPane {
int width1;
int width2;
public DrawPicturePanel() {
width1 = 320;
width2 = 40;
}
public DrawPicturePanel(int width1, int width2) {
this.width1 = width1;
this.width2 = width2;
repaint();
}
public void paint(Graphics g) {
super.paint(g);
System.out.println("width1==" + width1);
// System.out.println("width2==" + width2);
g.drawImage(image1, 0, 0, width1, width1, this);
// g.drawImage(image2, width1/2, width1/2, width2, width2, this);
}
//重载此方法后就可以了
public Dimension getPreferredSize()
{
return new Dimension(width1, width1);
}
}
public static void main(String args[]) {
TestImage kakudai1 = new TestImage();
kakudai1.setSize(450, 450);
kakudai1.show();
}
}
hxchawk_jcc
2003-11-30
打赏
举报
回复
这是我的程序,能实现图片的伸缩,但显示不了上下左右scrollbar.
package nxworks.jpcom.net.util;
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;
import java.awt.event.*;
import javax.swing.event.*;
public class Kakudai1
extends JFrame
{
Image image1 = Toolkit.getDefaultToolkit().getImage(
"D:\\airport\\images\\enlarge1.jpg");
// Image image2 = Toolkit.getDefaultToolkit().getImage(
// "D:\\airport\\images\\plane1.jpg");
// Image image2 = Toolkit.getDefaultToolkit().getImage(
// "D:\\airport\\images\\airB.gif");
JLabel lbl_peirihiteyi = new JLabel();
JLabel lbl_peri = new JLabel();
JLabel lbl_periseteyi = new JLabel();
JSlider sld_peri = new JSlider();
JTextField txt_peri = new JTextField();
JToggleButton btn_cancel = new JToggleButton();
JScrollPane jScrollPane1 = new JScrollPane();
DrawPicturePanel custom_pane = new DrawPicturePanel();
public Kakudai1()
{
try
{
jbInit();
}
catch (Exception e)
{
e.printStackTrace();
}
sld_peri.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent e)
{
double peri = sld_peri.getValue()/10.0;
txt_peri.setText("" + peri);
//peri = peri/10.0;
System.out.println("changed-----------");
custom_pane = new DrawPicturePanel( (int)(320 * peri), (int)(40 * peri));
jScrollPane1.getViewport().add(custom_pane, null);
}
}
);
}
private void jbInit() throws Exception
{
lbl_peirihiteyi.setFont(new java.awt.Font("Dialog", 0, 16));
lbl_peirihiteyi.setVerifyInputWhenFocusTarget(true);
lbl_peirihiteyi.setText("倍率指定");
lbl_peirihiteyi.setBounds(new Rectangle(48, 368, 75, 39));
sld_peri.setMajorTickSpacing(1);
sld_peri.setValue(10);
sld_peri.setMaximum(12);
sld_peri.setMinimum(8);
sld_peri.setMinorTickSpacing(0);
sld_peri.setPaintLabels(false);
sld_peri.setPaintTicks(true);
sld_peri.setBorder(null);
sld_peri.setMinimumSize(new Dimension(36, 40));
sld_peri.setOpaque(true);
sld_peri.setBounds(new Rectangle(126, 376, 113, 28));
lbl_periseteyi.setEnabled(true);
lbl_periseteyi.setFont(new java.awt.Font("Dialog", 0, 16));
lbl_periseteyi.setText("倍率设定");
lbl_periseteyi.setBounds(new Rectangle(246, 382, 67, 15));
txt_peri.setText("1.0");
txt_peri.setBounds(new Rectangle(319, 380, 55, 22));
btn_cancel.setText("消去");
btn_cancel.setBounds(new Rectangle(327, 414, 72, 40));
lbl_peri.setFont(new java.awt.Font("Dialog", 0, 16));
lbl_peri.setText("倍");
lbl_peri.setVerticalAlignment(SwingConstants.CENTER);
lbl_peri.setBounds(new Rectangle(388, 379, 41, 26));
this.setResizable(false);
jScrollPane1.setBorder(null);
//jScrollPane1.getViewport().setBackground(Color.lightGray);
//jScrollPane1.setAlignmentX( (float) 0.5);
jScrollPane1.setBounds(new Rectangle(40, 40, 320, 320));
jScrollPane1.getViewport().add(custom_pane, null);
//jScrollPane1.setVerticalScrollBarPolicy(1);
this.getContentPane().add(jScrollPane1, null);
this.getContentPane().add(lbl_peirihiteyi, null);
this.getContentPane().add(sld_peri, null);
this.getContentPane().add(btn_cancel, null);
this.getContentPane().add(lbl_periseteyi, null);
this.getContentPane().add(txt_peri, null);
this.getContentPane().add(lbl_peri, null);
this.setTitle("");
this.getContentPane().setLayout(null);
}
class DrawPicturePanel
extends JScrollPane
{
int width1;
int width2;
public DrawPicturePanel()
{
width1 = 320;
width2 = 40;
}
public DrawPicturePanel(int width1, int width2)
{
this.width1 = width1;
this.width2 = width2;
repaint();
}
public void paint(Graphics g)
{
System.out.println("width1==" + width1);
// System.out.println("width2==" + width2);
g.drawImage(image1, 0, 0, width1, width1, this);
// g.drawImage(image2, width1/2, width1/2, width2, width2, this);
}
}
public static void main(String args[])
{
Kakudai1 kakudai1 = new Kakudai1();
kakudai1.setSize(450, 450);
kakudai1.show();
}
}
豆瓣
高分
JAVA书籍,你都读过吗?
作为一个程序员,要时时刻刻的学习,豆瓣
高分
JAVA书籍你都看过了吗?,文末有粉丝福利哦!!! 1.《算法(第4版》 9.32分 本书全面讲述算法和数据结构的必备知识,具有以下几大特色。 算法领域的经典参考书 Sedgewick畅销著作的最新版,反映了经过几十年演化而成的算法核心知识体系 内容全面 全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算...
Java GUI入门实战项目:基于AWT与
Swing
的桌面应用开发
Swing
中
的(如JTextField)使用Document接口作为其底层数据模型。我们可以通过扩展来
实现
输入验证或格式化。@Override// 只允许数字if (!// 检查长度应用该模型:这样就
实现
了输入限制:仅接受数字且最多三位。
Java
图片
处理工具类详解与实战
Java
图片
处理工具类的未来,将受到机器学习、云计算等技术的影响。例如,将机器学习算法用于
图片
识别、分类和内容自动生成,以及通过云计算提升处理大量
图片
时的可
伸缩
性和可靠性,都是当前技术发展的趋势。
Java
实现
屏幕截图功能的完整解决方案
Java作为一门功能强大的编程语言,不仅在企业级开发
中
占据主导地位,也在图形处理、系统交互等领域展现出其灵活性与扩展性。其
中
,利用Java
实现
屏幕截图是一项兼具实用性和技术深度的功能,广泛应用于自动化测试、远程监控、日志记录以及桌面应用开发等场景。本章将从整体视角介绍Java
实现
截屏的基本背景,阐述其技术价值和现实意义,并引出后续章节所要深入探讨的核心内容——基于AWT Robot类的截屏机制。
探秘轻量级Java SVG库:JSVG
探秘轻量级Java SVG库:JSVG 在图形设计与Web开发的世界
中
,SVG(Scalable Vector Graphics)因其可
伸缩
性、清晰度和丰富的交互性而受到广泛青睐。今天我们要向您介绍的是一款专门为Java平台打造的轻量级SVG
实现
——JSVG。 项目简介 JSVG 是一个基于AWT图形接口的SVG用户代理库,旨在提供小巧且高效的SVG渲染解决方案。这个库目前处于活跃开发状态,虽然尚...
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章