精华内容
下载资源
问答
  • packagejava525;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassMainWindowextendsJFrameimplementsActionListener{JMenuBarmenuBar;//菜单条JMenumenu1,m...package java525;import java...

    packagejava525;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassMainWindowextendsJFrameimplementsActionListener{JMenuBarmenuBar;//菜单条JMenumenu1,m...

    package java525;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class MainWindow extends JFrame implements ActionListener {

    JMenuBar menuBar;//菜单条

    JMenu menu1, menu2, menu3, menu4;//菜单

    JMenuItem m11, m12, m13;//菜单项

    JMenuItem m21, m22, m23;

    JMenuItem m31, m32, m33;

    JMenuItem m41, m42;

    public MainWindow() {

    createMenu();

    setTitle("学生管理系统"); //设置窗口标题

    setIconImage((new ImageIcon("icon.gif")).getImage()); //设置图标

    setSize(600, 400);//设置窗口大小

    Dimension size = Toolkit.getDefaultToolkit().getScreenSize();//取屏幕大小

    setLocation((size.width - getWidth()) / 2, (size.height - getHeight()) / 2);

    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //设置关闭行为

    setVisible(true);//使窗口可见

    this.setExtendedState(JFrame.MAXIMIZED_BOTH);

    }

    想在 "学生管理系统"这个大窗口下添加一张图片

    展开

    展开全文
  • 怎么在JAVA JFrame中添加几张图片,添加一张之后再添加的时候就只显示后面那张
  • 前一段时间做了一个项目,要基于图片模板生成票据凭证。下面总结一下使用Graphics2D写图片的方法。简单说,就是要下面的票据模板png图片上打印上数字,生成一个真的...2. src/main/resources下面添加模板图片,...

    前一段时间做了一个项目,要基于图片模板生成票据凭证。下面总结一下使用Graphics2D写图片的方法。

    简单说,就是要在下面的票据模板png图片上打印上数字,生成一个真的票据。

    模板是这个样子的:

    d1a536e5cb9bc96f053ce6209630ced2.png

    打上字之后是这个样子的:

    c4f9dddb876a9d7ce5d5b05380c75ed0.png

    下面贴一下代码。

    生成工程文件,添加必要的依赖。

    1. 主要的依赖是Log4j2、lombok,具体请参照前面几篇“开发入门”文章。

    2. 在src/main/resources下面添加模板图片,命名为paperCredential.png

    在图片上写字

    基础用法

                Graphics2D g2d = image.createGraphics();
                g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                g2d.setColor(Color.RED);
                g2d.setFont(font);
                // 打印字符串,例如:g2d.drawString(text, x, y);
                g2d.dispose();

    但因为要打印的字比较多,直接打印每一个字符虽然更直接,但很难维护,所以要封装一下。

    1. 定义writeImage打印字符串到指定的位置
        private void writeImage(Graphics graphics, String name,  String text) {
            writeImage(graphics, CREDENTIAL_FIELD_MAP.get(name).x, CREDENTIAL_FIELD_MAP.get(name).y, text);
        }
    
        private void writeImage(Graphics graphics, int x, int y,  String text) {
            if (text == null) {
                log.error("The text should not be null.");
                return;
            }
    
            graphics.drawString(text, x, y);
        }

    2. 打印出了金额之外的字符串到图片

    前面定义了writeImage之后,就可以直接调用它来打印字符串了。除了金额之外,其他的字符串都可以直接打印出来。

                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    
                Graphics2D g2d = image.createGraphics();
                g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                g2d.setColor(Color.RED);
    
                writeImage(g2d, "created_date", dateFormat.format(paperVo.getCreatedDate()));
                writeImage(g2d, "due_date", dateFormat.format(paperVo.getDueDate()));
                writeImage(g2d, "encode", paperVo.getEncode());
                writeImage(g2d, "holder", paperVo.getHolderEnterpriseName());
                writeImage(g2d, "origin_holder", paperVo.getPrimaryEnterpriseName());
                writeImage(g2d, "if_transfer", paperVo.getIfTransfer() > 0 ? "Y" : "N");
                writeImage(g2d, "if_delay", paperVo.getIfDelay() > 0 ? "Y" : "N");
                writeImage(g2d, "note", note);
    
                g2d.dispose()

    3. 定义每个字符串的位置

    前面打印每一个字符串的时候,都用到了打印位置的坐标(x,y),但在实际在调用writeImage打印的时候只提供了打印字符串的title,比如:“created_date”。我们需要定义数据结构,把打印字符串的title变换成具体的坐标数字。

    引入下面的数据结构来定义每一个字符串的位置:

        private final static int START_X_1 = 126;
        private final static int START_X_2 = 444;
        private final static int START_Y = 170;
        private final static float GRID_HEIGHT = 42.5f;
        private final static int TEXT_WIDTH = 16;
    
        private Map<String, Rectangle> CREDENTIAL_FIELD_MAP = new HashMap<String, Rectangle>() {
            {
                put("created_date", new Rectangle(START_X_1 + 4 * TEXT_WIDTH,START_Y, 0, 0));
                put("due_date", new Rectangle(START_X_1 + 5 * TEXT_WIDTH,(int)(START_Y + GRID_HEIGHT), 0, 0));
                put("holder", new Rectangle(START_X_1 + 5 * TEXT_WIDTH,(int)(START_Y + 2 * GRID_HEIGHT), 0, 0));
                put("amount", new Rectangle(718, (int)(START_Y + 4 * GRID_HEIGHT), 40, 42));
                put("if_transfer", new Rectangle(START_X_1 + 6 * TEXT_WIDTH,(int)(START_Y + 5 * GRID_HEIGHT), 0, 0));
                put("if_delay", new Rectangle(START_X_2 + 4 * TEXT_WIDTH,(int)(START_Y + 5 * GRID_HEIGHT), 0, 0));
    
                put("status", new Rectangle(START_X_2 + 4 * TEXT_WIDTH,START_Y, 0, 0));
                put("encode", new Rectangle(START_X_2 + 4 * TEXT_WIDTH,(int)(START_Y + GRID_HEIGHT), 0, 0));
                put("origin_holder", new Rectangle(START_X_2 + 7 * TEXT_WIDTH,(int)(START_Y + 2 * GRID_HEIGHT), 0, 0));
                put("note", new Rectangle(START_X_1 + 2 * TEXT_WIDTH,(int)(START_Y + 7 * GRID_HEIGHT), 0, 0));
            }
        };

    4. 打印金额

    定义打印金额的函数,来打印完整的数字到格子里:

        private void writeAmount(Graphics graphics, long amount) {
            for (int i = 0; i < AMOUNT_NUMBER_LENGTH && amount > 0; i++, amount /= 10) {
                writeImage(graphics, (int)(CREDENTIAL_FIELD_MAP.get("amount").x - i * CREDENTIAL_FIELD_MAP.get("amount").width) + (i / 2), CREDENTIAL_FIELD_MAP.get("amount").y, String.valueOf(amount % 10)/*BIG_NUMBER_LIST[(int)(amount % 10)]*/);
            }
        }

    最后的效果是这样的:

    05fe8043dd9714c51b89710540953bb6.png

    5. 自带字体

    之前遇到过部署的服务器上面没有中文的情况,导致所有的汉字都无法打印的问题。简单的解决方案是直接在工程里面加入字体文件,并打包发布就可以了。

    首先在src/main/resources下面添加font package,在里面添加ttf文件。然后在代码里面加载该字体:

        private final static String FONT_FILENAME = "font/simsun.ttf";
     
        private Font loadFont(float fontSize) {
            if (dynamicFont == null) {
                log.info("Try to load font.");
                InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(FONT_FILENAME);
                try {
                    dynamicFont = Font.createFont(Font.TRUETYPE_FONT, inputStream);
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                }
    
                try {
                    inputStream.close();
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                }
            }
    
            return dynamicFont == null ? null : dynamicFont.deriveFont(fontSize);
        }

    6. 添加UnitTest测试打印效果

    在src/test/java目录下的com.example.hello package里面创建GraphicUtilTest.java文件,添加测试用例来调用产品代码。

    package com.example.hello.utils;
    
    import com.example.hello.utils.GraphicUtil;
    import com.example.hello.vo.PaperVo;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Component;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.Date;
    
    public class GraphicUtilTest {
    
        private GraphicUtil graphicUtil = new GraphicUtil();
    
        private PaperVo paperVo = null;
    
        @Before
        public void before() {
            setKingmiReqDto();
        }
    
        @Test
        public void createCredentialTest() {
            assert graphicUtil.createCertificate(paperVo) != null;
        }
    
        private void setKingmiReqDto() {
            paperVo = new PaperVo();
            paperVo.setAmount(123456789L);
            paperVo.setCreatedDate(new Date());
            paperVo.setDueDate(new Date());
            paperVo.setIfTransfer(1);
            paperVo.setIfDelay(1);
            paperVo.setHolderEnterpriseName("宇宙金融科技有限公司");
            paperVo.setNote("一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十");
        }
    }
    

    运行createCredentialTest,可能会遇到找不到%MODULE_WORKING_DIR%的错误,这是因为工作目录不匹配的问题。按下面的方法来解决:

    1. Run -> Edit Configuration
    2. 然后把working directory里面的内容改成原点(当前目录)

    4f2607155710f02be2ea6b27fb79b18b.png

    完整的工程请参考:

    zhu-/print-graphicgithub.com
    02190f4fc2aa78c8e7d5070df2991272.png
    展开全文
  • java ``` package PPS; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax....
  • 一个PDF文件中(包含可能是文字,或者图片),添加签名图片的位置不固定,按需求,某个位置上添加 Java中怎么实现?谢谢
  • 我现在做一个系统的登入界面,但是我想这个登入界面上添加我喜欢的照片作为背景,请问我应该具体怎么实现?表单的大体模式我已经编写好了,现在只求添加背景图片的代码!!!
  • 前言Microsoft Excel没有直接的方法内置水印Excel工作表,我们可通过添加页眉页脚功能...本文将介绍如何使用Java程序来将文本以图片形式添加到Excel,最终呈现文本水印的效果。Jar包获取及导入方法其一: E-...

    前言

    Microsoft Excel没有直接的方法内置水印在Excel工作表中,我们可通过添加页眉页脚功能,将图片或文字加到Excel文档内容背后,实现类似水印的效果。但是该类水印只有在打印预览或视图模式为“页面视图”下才能直观可见。

    通常情况下,水印分为文本水印和图片水印。本文将介绍如何使用Java程序来将文本以图片形式添加到Excel中,最终呈现文本水印的效果。

    Jar包获取及导入方法

    其一: 在E-iceblue中文官网上下载Free Spire.XLS for Java产品包,解压后将lib文件夹下的Spire.Xls.jar手动导入IDEA。

    其二(推荐使用):通过Maven仓库安装导入产品及依赖。创建一个Maven项目,在pom.xml文件中输入以下代码,然后点击“Import Changes”即可。

    com.e-icebluehttp://repo.e-iceblue.cn/repository/maven-public/e-iceblue        spire.xls.free        2.2.0

    最终导入效果如下图所示:

    5f8c06a3bbfa05c368ba9fac1870f8b3.png

    代码示例

    import com.spire.xls.*;import java.awt.*;import java.awt.image.BufferedImage;import static java.awt.image.BufferedImage.TYPE_INT_ARGB;public class AddWatermark {    public static void main(String[] args) {        //加载示例文档        Workbook workbook = new Workbook();        workbook.loadFromFile("C:甥敳獲Test1DesktopSample.xlsx");        //设置水印文字和字体        Font font = new Font("仿宋", Font.PLAIN, 40);        String watermark = "内部专用";        //在页眉中插入图片作为模拟水印        for (Worksheet sheet : (Iterable) workbook.getWorksheets()) {            //调用DrawText() 方法创建图片            BufferedImage imgWtrmrk = drawText(watermark, font, Color.pink, Color.white, sheet.getPageSetup().getPageHeight(), sheet.getPageSetup().getPageWidth());            //插入图片作为LeftHeaderImage            sheet.getPageSetup().setLeftHeaderImage(imgWtrmrk);            sheet.getPageSetup().setLeftHeader("&G");            //设置视图模式,页眉水印仅在Layout模式下直观可见            sheet.setViewMode(ViewMode.Layout);        }        //保存文档        workbook.saveToFile("output/AddWatermark.xlsx", ExcelVersion.Version2010);    }    private static BufferedImage drawText (String text, Font font, Color textColor, Color backColor,double height, double width)    {        //将用来作为水印的文本返回为图片并设置其展示样式        BufferedImage img = new BufferedImage((int) width, (int) height, TYPE_INT_ARGB);//定义图片宽度和高度        Graphics2D loGraphic = img.createGraphics();        //获取文本大小        FontMetrics loFontMetrics = loGraphic.getFontMetrics(font);        int liStrWidth = loFontMetrics.stringWidth(text);        int liStrHeight = loFontMetrics.getHeight();        //文本显示样式及位置        loGraphic.setColor(backColor);        loGraphic.fillRect(0, 0, (int) width, (int) height);        loGraphic.translate(((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);        loGraphic.rotate(Math.toRadians(-45));        loGraphic.translate(-((int) width - liStrWidth) / 2, -((int) height - liStrHeight) / 2);        loGraphic.setFont(font);        loGraphic.setColor(textColor);        loGraphic.drawString(text, ((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);        loGraphic.dispose();        return img;    }}

    添加效果

    7840adc9aa2ceb8a3ca5d067335b4513.png

    (本文完)

    展开全文
  • JAVA使用Marvin在图片中搜索图片

    千次阅读 2017-04-25 10:50:21
    Java开源图像处理框架,marvin项目地址使用非常简单,按照tutorials一步一步就知道怎么部署代码。依赖只需要添加marvin/framework/marvin_1.5.5.jar到classpath。

    marvin

    Marvin是一个Java开源图像处理框架
    项目地址

    使用非常简单,按照tutorials一步一步就知道怎么部署代码。

    依赖只需要添加marvin/framework/marvin_1.5.5.jar到classpath。

    例子:

    import marvin.image.MarvinImage;
    import marvin.image.MarvinSegment;
    import marvin.io.MarvinImageIO;
    
    import java.awt.*;
    import java.io.File;
    
    import static marvin.MarvinPluginCollection.*;
    
    public class Subimage {
        public Subimage(){
            MarvinImage window = MarvinImageIO.loadImage("E:\\msC_desktop\\batlogo.jpg");
            MarvinImage eclipse = MarvinImageIO.loadImage("E:\\msC_desktop\\wxlogo.jpg");
    
            MarvinSegment seg1;
    
            int startx = 500, starty = 0;
            seg1 = findSubimage(eclipse, window, startx, starty, 0.75);
            if(seg1 != null){
                System.out.println("Found:" + seg1.x1 + " " + seg1.y1 + " width:"+ (seg1.x2-seg1.x1) + " height:"+(seg1.y2-seg1.y1) );
                drawRect(window, seg1.x1, seg1.y1, seg1.x2-seg1.x1, seg1.y2-seg1.y1);
                MarvinImageIO.saveImage(window, "E:\\msC_desktop\\window_out.png");
            }else{
                System.out.println("NOT FOUND");
            }
    
        }
        private void drawRect(MarvinImage image, int x, int y, int width, int height){
            x-=4; y-=4; width+=8; height+=8;
            image.drawRect(x, y, width, height, Color.red);
        }
        public static void main(String[] args) {
            new Subimage();
        }
    } 

    效果如下:
    marvin image search

    函数也可以查阅javadoc.

    展开全文
  • 有些时候,对于前段展示图片来说,有必要给图片添加一个属于自己程序的logo,以免其他人盗用图片,这是一个很严肃的问题,今天来给大家说说怎么图片添加logo。 知识量说明:本篇内容比较丰富,对于不熟悉这方面的...
  • java控制 添加图片到word

    千次阅读 2008-10-18 10:50:00
    开始做这个功能的时候无从下手,对于jacob 那个Selection封装jar(offic_wrapper.jar)包中怎么的也得不到正确应用,总是提示空指针错误。 用word做的宏中都有Selection这个东西去找的,总以为封装类里面也都...
  • 请问:现有一个有序的数组,现在想要将一个元素插入到该数组去,还要保证该数组是有序的; 因为数组长度一旦确定就不能改变,但是我想知道,有没有一种方法可以增加数组的长度并且按照合法的顺序添加元素。length...
  • 怎么在eclipse中添加数据库的驱动包

    千次阅读 2020-06-15 09:12:19
    下载完成后,eclipse创造一个java project,左上角的File选定 New。 创造完后,点击你创造的工程右键选中以下图片的build path > Configure Build Path 点击之后进入以下界面,Add External JARS....
  • 本文就将介绍如何使用Free Spire.Doc for Java 添加图片到Word文档并设置图片的大小及文字环绕方式。Jar包导入方法一:下载Free Spire.Doc for Java包并解压缩,然后将lib文件夹下的Spire.Doc.jar包作为依赖项导入到...
  • 此次科研信息管理系统用到的java知识点:JAVA基础,JAVA界面设计(GUI),Oracle数据库(需要掌握数据库的基本操作语句),链接数据库。... 增加:向数据库的表增加科研项目的所有信息添加控制台使用SQL语句...
  • 展开全部在java swing需要为容器e69da5e887aa3231313335323631343130323136353331333337396230添加自定义图片或者背景图片。提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel,代码如下:1、JPanel(源...
  • 我用java程序向本地的sql server 2000中添加一条记录,java控制台提示成功![图片说明](https://img-ask.csdn.net/upload/201702/04/1486204123_720929.png)但是用查询分析器select之后并没有这条记录。![图片说明]...
  • //登陆代码,将用户输入的内容打印控制台 String id=txID.getText(); String pw=txPw.getText(); //调用studentDao查询是否有该学生信息 Student student=StudentDao.query(id); ...
  • 第二种是在java代码添加下划线 public class HelloActivity extends Activity { private TextView tv_wangji; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate...
  • 坦克大战效果图:坦克大战V0.7图片版实现功能:1、将方向定义为一个Enum类写一个文件里,修正坦克子弹的颜色2、加入坦克、子弹、爆炸的图片3、添加配置文件,并导出可运行的jar包注意事项:1、ProperMrg类props....
  • ![![图片说明图片说明](https://img-ask.csdn.net/upload/201507/21/1437408372_522094.png)]...第一种情况我把图片放在工程目录下、src目录下、和java文件同目录都会报错。求前辈们解答一下,拜谢!
  • Swing如何在图片添加组件而不被覆盖

    千次阅读 多人点赞 2020-05-31 17:07:38
    但是又无奈不知道怎么在图片添加组件 当我们稍作修改后,摇身一变 核心代码 要在JFrame上添加背景图片,常见做法是加在layeredPane上面,并将contentPane设置成透明的即可。 panel = (JPanel) getContentPane();...
  • 在java 图形界面怎么把一张图片设为窗口的背景,然后可以继续在上面添加其他组件,就是说后面添加的组件不会把那个背景图片给覆盖了?有谁能指教一二,谢谢了。
  • 网上找到的所有关于itext的文档都是生成一个新的word,而我们是要已存在的word中添加一张图片,求各位大神帮帮我。
  • //登陆代码,将用户输入的内容打印控制台 String id=txID.getText(); String pw=txPw.getText(); StudentDao studentDao=new StudentDao(); System.out.println("id="+id+"pw="+pw); } ...
  • // 此处没有设置South的布局,因为设置后再将South面板放入框架时,发现三个按钮无法全部加入,只能加入最后一个 Center.setLayout(new BorderLayout()); North.add(menuBar); add(North, ...
  • ![图片说明](https://img-ask.csdn.net/upload/201607/20/1469001950_771949.png) 下面那个jtextfield框看到光标中间,我现在想一行一行添加文字,请问该怎么更改
  • 大致要求是这样,利用java代码获取到某一磁盘下的一个文件夹里面的所有子目录,然后生成excel表格,把获取到的目录放进去,同时添加上超链接,可以直接excle表格里面点击访问该目录或文件,。我现在就差怎么添加...
  • 如何轮播的图片添加点击事件

    千次阅读 2016-11-27 21:31:59
    我想轮播的图片中添加点击事件,点击图片就可以转到另一个Activity,应该怎么实现呢?下面是实现图片轮播的代码,我了Fragment内(代码转载自:http://blog.csdn.net/l1028386804/article/details/48049913) ...
  • 做一个把crashlog显示到指定listview的小工具,显示是显示出来了,但是每次新增的crashlog都自动加到listview的最后一位,用了Collections.reverse()只是把表面文件名倒了过来,里面的数据还是不动,想要把每次...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

怎么在java中添加图片

java 订阅