Ⅰ java代码添加背景图片。更改背景颜色!awt或swing!很简单!越简单越好!
设置颜色:
把pan-pan6的Background设为Null,这样他们就变为透明的了,以后只需要改变inquestFrame的颜色就可以改变全部的颜色,代码如下:
//设置整体布局
JPanelpan=newJPanel();
pan.setLayout(newGridLayout(6,1));
pan.add(pan1);
pan.add(pan2);
pan.add(pan3);
pan.add(pan4);
pan.add(pan5);
pan.add(pan6);
pan.setBackground(null);
pan1.setBackground(null);
pan2.setBackground(null);
pan3.setBackground(null);
pan4.setBackground(null);
pan5.setBackground(null);
pan6.setBackground(null);
r1.setBackground(null);
r2.setBackground(null);
inquestFrame.setBackground(Color.LIGHT_GRAY);
inquestFrame.setContentPane(pan);
inquestFrame.setSize(300,250);
inquestFrame.setVisible(true);
设置图片需要改的比较多,自己比较那不一样吧:
importjava.awt.Graphics;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.net.URL;
importjavax.swing.ButtonGroup;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JRadioButton;
importjavax.swing.JTextField;
publicclassInquest{
JFrameinquestFrame;
JLabellab1,lab2,lab3,lab4,lab5,lab6;
JTextFieldtext1,text2,text4,text5,text6;
JRadioButtonr1,r2;
JButtoninqButton;
publicInquest(){
inquestFrame=newJFrame("教育经历管理系统-查询窗口");
MyPanelpan1=newMyPanel();
lab1=newJLabel("请输入编码:");
text1=newJTextField(10);
inqButton=newJButton("查询");
inqButton.addActionListener(newButtonHandler());
pan1.add(lab1);
pan1.add(text1);
pan1.add(inqButton);
MyPanelpan2=newMyPanel();
lab2=newJLabel("姓名:");
text2=newJTextField(10);
pan2.add(lab2);
pan2.add(text2);
MyPanelpan3=newMyPanel();
lab3=newJLabel("性别:");
r1=newJRadioButton("男");
r2=newJRadioButton("女");
//把两个单选按钮放到一个群组中,保持二选一
ButtonGroupgroup=newButtonGroup();
group.add(r1);
group.add(r2);
pan3.add(lab3);
pan3.add(r1);
pan3.add(r2);
MyPanelpan4=newMyPanel();
lab4=newJLabel("单位:");
text4=newJTextField(10);
pan4.add(lab4);
pan4.add(text4);
MyPanelpan5=newMyPanel();
lab5=newJLabel("职位:");
text5=newJTextField(10);
pan5.add(lab5);
pan5.add(text5);
MyPanelpan6=newMyPanel();
lab6=newJLabel("年龄:");
text6=newJTextField(10);
pan6.add(lab6);
pan6.add(text6);
//设置整体布局
MyPanelpan=newMyPanel();
pan.setLayout(newGridLayout(6,1));
pan.add(pan1);
pan.add(pan2);
pan.add(pan3);
pan.add(pan4);
pan.add(pan5);
pan.add(pan6);
pan.setBackground(null);
pan1.setBackground(null);
pan2.setBackground(null);
pan3.setBackground(null);
pan4.setBackground(null);
pan5.setBackground(null);
pan6.setBackground(null);
r1.setBackground(null);
r2.setBackground(null);
MyPanelpan0=newMyPanel();
pan0.setPreferredSize(pan.getPreferredSize());
pan0.setLayout(null);
pan.setBounds(0,0,pan.getPreferredSize().width,pan.getPreferredSize().height);
URLurl=Inquest.class.getResource("Winter.jpg");
ImageIconimg=newImageIcon(url);
JLabellab=newJLabel(img);
lab.setBounds(0,0,img.getIconWidth(),img.getIconHeight());
pan0.add(pan);
pan0.add(lab);
inquestFrame.setContentPane(pan0);
inquestFrame.pack();
inquestFrame.setVisible(true);
}
{
publicvoidpaint(Graphicsg){
paintChildren(g);
}
}
publicvoidsetBack(){
((JPanel)inquestFrame.getContentPane()).setOpaque(false);
//Winter.jpg这个图片的位置要跟当前这个类是同一个包下
URLurl=Inquest.class.getResource("Winter.jpg");
ImageIconimg=newImageIcon(url);
JLabelbackground=newJLabel(img);
inquestFrame.getLayeredPane().add(background,newInteger(Integer.MIN_VALUE));
background.setBounds(0,0,img.getIconWidth(),img.getIconHeight());
}
{
publicvoidactionPerformed(ActionEvente){
//生成SQL语句
Strings="select*frominformationwhereid="+"'"+text1.getText()+"'";
Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";
Stringurl="jdbc:odbc:test";
//DBdb=newDB(driver,url,"sa","");
//ResultSetrs=db.query(s);
//try{
//while(rs.next()){
//text2.setText(rs.getString(2));
//Stringsex=rs.getString(3);
//if(sex.trim().equals("男"))
//r1.setSelected(true);
//else
//r2.setSelected(true);
//
//text4.setText(rs.getString(4));
//text5.setText(rs.getString(5));
//text6.setText(rs.getString(6));
//}
//}catch(Exceptione2){
//e2.printStackTrace();
//}
}
}
publicstaticvoidmain(Stringargs[]){
newInquest();
}
}
Ⅱ 怎样用JAVA实现电子印章
参考如下代码
package com.wonders.cop.billing.util;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.imageio.ImageIO;
public class ImageMarkLogoUtil {
// 水印透明度
private static float alpha = 1f;
// 水印横向位置
private static int positionWidth = 82;
// 水印纵向位置
private static int positionHeight = 545;
// 水印文字字体
private static Font font = new Font("宋体", Font.PLAIN, 13);
// 水印文字颜色
private static Color color = Color.black;
public static void main(String[] args) {
String srcImgPath = "d:/888880002302900_web.jpg";
String targerTextPath = "d:/qie_text.jpg";
ImageMarkLogoUtil
.markImageByTexts(testValue(),
BillDetailImagePosition.getPosition("888880002302900"), srcImgPath,
targerTextPath);
}
public static Map testValue() {
Map<String, String> value = new HashMap<String, String>();
value.put("feedPrice", "15.1");
value.put("feedCount", "20");
value.put("nowNum", "124");
value.put("drainageCount", "55");
value.put("drainagePrice", "1.5");
value.put("feedCost", "66");
value.put("cost", "66");
value.put("drainageCost", "100");
value.put("barcode", "10101010101010101");
value.put("nextCopy", "2014-12-10");
value.put("waterType", "居民生活用水");
value.put("meterReader", "测试人员");
value.put("Number", "741sg");
value.put("prevCarryOver", "0.25");
value.put("nowCarryOver", "2.12");
value.put("openDate", "20141002");
value.put("nextMonth", "201402 ");
value.put("remark", "您缴付的2013年03月30.80元水费,我公司已收到,谢谢!");
value.put("detailStatus", "00");
value.put("billStatus", "00");
value.put("prevMonth", "201406");
value.put("lastPayDate", "20140112");
value.put("companyName", "市北水");
value.put("type", "1");
value.put("amount", "58.1");
value.put("address", "浦秀路220弄10号101");
value.put("year","2014");
value.put("month", "04");
value.put("billId", "11111");
value.put("account", "38445450");
value.put("companyId", "888880002302900");
value.put("realName", "姚航");
return value;
}
/**
* 给图片添加水印文字、可设置水印文字的旋转角度
*
* @param logoText
* @param srcImgPath
* @param targerPath
* @param degree
*/
public static void markImageByTexts(Map<String, String> value,
Map<String, String[]> position, String srcImgPath, String targerPath) {
InputStream is = null;
OutputStream os = null;
try {
// 1、源图片
Image srcImg = ImageIO.read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// 2、得到画笔对象
Iterator<String> positionIter = position.keySet().iterator();
String key = "";
String logotext = "";
String[] xy;
while (positionIter.hasNext()) {
key = positionIter.next();
xy = position.get(key);
logotext = value.get(key);
System.out.println("key:"+key+",value:"+logotext);
if (xy != null && xy.length == 2)
printText(srcImg, buffImg, logotext,
Integer.valueOf(xy[0]), Integer.valueOf(xy[1]));
}
// 10、生成图片
os = new FileOutputStream(targerPath);
ImageIO.write(buffImg, "JPG", os);
System.out.println("图片完成添加水印文字");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != is)
is.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
if (null != os)
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 在图片上打印文字
*
* @param srcImg
* @param buffImg
* @param logoText
* @return
*/
private static void printText(Image srcImg, BufferedImage buffImg,
String logoText, Integer positionX, Integer PositionY) {
Graphics2D g = buffImg.createGraphics();
// 3、设置对线段的锯齿状边缘处理
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(null),
srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);
// 5、设置水印文字颜色
g.setColor(color);
// 6、设置水印文字Font
g.setFont(font);
// 7、设置水印文字透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha));
// 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
g.drawString(logoText, positionX, PositionY);
// 9、释放资源
g.dispose();
}
}
Ⅲ java 在图片上写字,当字长度超过图片宽度,文字自动换行,并且均居中!
要自己量度文字相对该字体的宽度,自己去换行的。
FontMetrics
getFontMetrics()
Gets the font metrics of the current font.
abstract FontMetrics
getFontMetrics(Font f)
Gets the font metrics for the specified font.
得到FontMetrics,再去量度文字的宽度等信息
Ⅳ 怎么弄这种图片里面的选择图片框;我在用java 关于java的图片
利用样式 和 事件应该可以吧
Ⅳ 如何利用java在图片上添加文字
// 读取模板图片内容
BufferedImage image = ImageIO.read(new FileInputStream("c:\\test.jpg"));
Graphics2D g = image.createGraphics();// 得到图形上下文
g.setColor(Color.BLACK); // 设置画笔颜色
// 设置字体
g.setFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, 15));// 写入签名
// 下面这一句中的43,image.getHeight()-10可以改成你要的坐标。
g.drawString("这是新加入的文字", 43, image.getHeight() - 10);
g.dispose();
FileOutputStream out = new FileOutputStream("c:\\test1.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
希望我的回答能帮助你 谢谢 呵呵 答案补充 肯定了 在一张纸上写字 肯定会自动换行的 否则写外面?逻辑都通不过去~ 答案补充 把你的意思说出了 是不是随便的写字然后就提交 就把字写在了图片上还是?多少字 有没有约束? 答案补充 g.drawString("这是新加入的文字", 43, image.getHeight() - 10);
在这个做处理 你规定了字体的大小 那么获取字符的长度*大小 一次判断不要大于宽度 否则image.getHeight() - 10++ 你试试 应该可以的 我这里没有Eclipse 答案补充 public class mains {
/**
* @param args
*/
private static int fontsize = 15;
static String jj(String str)
{
String sContent = str;
sContent=sContent.replaceAll(" "," ");
sContent=sContent.replaceAll("<br/>","/");
sContent=sContent.replaceAll("<br>","/");
return sContent;
} 答案补充 static void hh(String str)
{
BufferedImage image;
try {
image = ImageIO.read(new FileInputStream("E:\\dian zi za /789.jpg"));
Graphics2D g = image.createGraphics();// 得到图形上下文
g.setColor(Color.BLACK); // 设置画笔颜色
// 设置字体
g.setFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, fontsize));// 写入签名
// 下面这一句中的43,image.getHeight()-10可以改成你要的坐标。
String text = jj(str); 答案补充 String [] text1 = text.split("/");
int h = image.getHeight();
int w = image.getWidth();
for(int i=0;i<text1.length;i++)
{
g.drawString(text1[i],0,fontsize+i*fontsize);
}
g.dispose();
FileOutputStream out = new FileOutputStream("E:\\dian zi za /789.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close(); 答案补充 public static void main(String[] args) {
// TODO Auto-generated method stub
hh("sdakljsdhww<br/>asdasd<br/>a");
}
}
试试 可以换行 答案补充 关于 图片的尺寸以及字体是否超出 你自己试着解决下 不要过于依赖问
Ⅵ 关于JAVA.AWT里面 BufferedImage 创建图片的问题
再使用BufferedImage 的 getGraphics()得到 Graphics,就可以画、可以写字、可以…………
ImageIO,可以将BufferedImage 转成流
Ⅶ java使用Graphics2D给图片上写字
你的电脑系统上要有那个字体,java才可以设置。
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();
String [] fontList = ge.getAvailableFontFamilyNames ();
用这个看看你电脑上的字体吧。
Ⅷ java awt 圆内写字
Graphics2D g2d;
g2d.rotate-Math.PI*0.5);
//可以任意旋转角度
再把文字逐个画上去
Ⅸ java 如何在画布某个坐标上写字
canvas中有一个函数translate()是用来实现画布平移的,画布的原状是以左上角为原点,向左是x轴正方向,向下是y轴正方向,如下图所示,也就是(0,0)。
Ⅹ java如何让jlable中的图片上写字和现显示JTextField
图片有getGraphics方法,得到的Graphics对象有drawString方法可以写字。
至于重叠么,SWING应该是不能直接显示图片,默认也不能把图片作为背景(除非你自己去覆盖paint方法),那么,去看看JLayeredPane。把图片放进JLabel,放在底层,JTextField放在JLayeredPane上面一点的层次,注意要去查JLayeredPane的API,记得设置层次。