setclipjava的简单介绍
今天给各位分享setclipjava的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java代码的打印信息控件怎么做?或者有现成的代码也行。
- 2、java中使用setClip()裁剪不规则图形
- 3、java swing 怎么绘制一个圆角矩形的面板?
- 4、JAVA 实现打印用什么方法?
- 5、Java 画图重绘
- 6、Java 获取组件绘图上下文对象 的问题
java代码的打印信息控件怎么做?或者有现成的代码也行。
一: 首先理清业务逻辑
两个窗口, 第一个主窗口, 是用于填写信息的, 点击按钮后,跳转到第二个窗口,.
第二个对话框窗口 ,用于显示需要打印的信息, 以及打印到文档
二: 确定需要的技术, java图像界面主要使用awt和swing
swing里面的控件比较丰富, 且功能强大 .
三: 效果图片
四: 完整的参考代码
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
//定义一个主窗口类
public class MainFrame extends JFrame {
public static final String FILE_PATH = "c:\\print.txt";//常量,用于指定信息的保存路径
//定义主要的组件
private final JTextField jtf1,jtf2,jtf3;
private final JCheckBox jcb1,jcb2,jcb3;
private final JRadioButton jrb1,jrb2;
public MainFrame() {
setTitle("信息提交窗口");//设置窗口标题
setSize(350, 320);//设置窗口大小
setLocationRelativeTo(null);//让窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//当主窗口关闭的时候退出jvm虚拟机
JPanel jp = new JPanel(new GridLayout(5, 1, 2, 1));//定义主显示面板,布局为表格布局5行1列,水平间距2,垂直间距1
JPanel jp1 = new JPanel();//第一行的组件面板
JLabel jl1 = new JLabel("姓名");
jtf1 = new JTextField(10);
jp1.add(jl1);
jp1.add(jtf1);
JPanel jp2 = new JPanel();//第二行的组件面板
JLabel jl2 = new JLabel("学号");
jtf2 = new JTextField(10);
jp2.add(jl2);
jp2.add(jtf2);
JPanel jp3 = new JPanel();//第三行的组件面板
JLabel jl3 = new JLabel("性别");
jrb1 = new JRadioButton("男");
jrb2 = new JRadioButton("女");
jrb1.setSelected(true);
ButtonGroup bgs = new ButtonGroup();
bgs.add(jrb1);
bgs.add(jrb2);
jp3.add(jl3);
jp3.add(jrb1);
jp3.add(jrb2);
JPanel jp4 = new JPanel();//第四行的组件面板
JLabel jl4 = new JLabel("选择爱好");
jcb1 = new JCheckBox("游泳");
jcb2 = new JCheckBox("篮球");
jcb3 = new JCheckBox("跑步");
jp4.add(jl4);
jp4.add(jcb1);
jp4.add(jcb2);
jp4.add(jcb3);
JPanel jp5 = new JPanel();//第五行的组件面板
JLabel jl5 = new JLabel("自我介绍");
jtf3 = new JTextField(22);
jp5.add(jl5);
jp5.add(jtf3);
//添加到主显示面板
jp.add(jp1);
jp.add(jp2);
jp.add(jp3);
jp.add(jp4);
jp.add(jp5);
jp.setBorder(BorderFactory.createTitledBorder("填写资料"));//设置主显示面板的边框
JButton jb = new JButton("跳转到打印页");
jb.addActionListener(new ActionListener() {//按钮事件
public void actionPerformed(ActionEvent e) {//获取组件的信息
StringBuilder sb = new StringBuilder();//用于连接信息
String name = jtf1.getText();
sb.append("姓名:" + name + "\r\n");
String num = jtf2.getText();
sb.append("学号:" + num + "\r\n");
String sex;
if (jrb1.isSelected()) {
sex = "男";
} else {
sex = "女";
}
sb.append("性别:" + sex + "\r\n");
String aihao = "";
if (jcb1.isSelected()) {
aihao += jcb1.getText();
}
if (jcb2.isSelected()) {
aihao += " " + jcb2.getText();
}
if (jcb3.isSelected()) {
aihao += " " + jcb3.getText();
}
sb.append("爱好:" + aihao + "\r\n");
String jieshao = jtf3.getText();
sb.append("自我介绍:" + jieshao + "\r\n");
new PrintDailog(sb.toString(), FILE_PATH).setVisible(true);//打开打印页面,并设置为可见
}
});
getContentPane().add(new JLabel("信息填写",JLabel.CENTER),BorderLayout.NORTH);
getContentPane().add(jp);
getContentPane().add(jb, BorderLayout.SOUTH);
}
public static void main(String[] args) {
new MainFrame().setVisible(true);
}
}
//定义一个对话框窗口类
class PrintDailog extends JDialog {
String info;//用于接受信息
String filePath;//文档的路径
private final JLabel jl2;
public PrintDailog(String info, final String filePath) {
this.info = info;
this.filePath = filePath;
setModal(true);//模态为真,如果不关闭这个对话框,那么无法点击其他窗口
setTitle("信息打印页");//设置打印窗口的标题
setSize(300, 320);//设置打印窗口的大小
setLocationRelativeTo(null);//设置打印窗口居中
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);//当点击关闭按钮时,该窗口销毁
JLabel jl1 = new JLabel("信息打印显示", JLabel.CENTER);
JTextArea jta = new JTextArea(info);
jta.setEditable(false);//不可编辑
jta.setLineWrap(true);//自动换行
JScrollPane jsp = new JScrollPane(jta);
jsp.setBorder(BorderFactory.createTitledBorder("信息"));
JButton jb1 = new JButton("打印");
JPanel jp = new JPanel(new GridLayout(2, 1));
JPanel jp1 = new JPanel();
jp1.add(jb1);
JPanel jp2 = new JPanel();
jl2 = new JLabel();
jp2.add(jl2);
jp.add(jp1);
jp.add(jp2);
add(jl1, BorderLayout.NORTH);
add(jsp);
add(jp, BorderLayout.SOUTH);
jb1.addActionListener(new ActionListener() {//点击打印的按钮的事件
public void actionPerformed(ActionEvent e) {
saveToFile();//信息打印到了文档
jl2.setText("信息已经打印到" + filePath);//显示出来
jl2.setForeground(Color.RED);//为了醒目设置颜色为红色
}
});
}
private void saveToFile() {//该方法用于保存信息到文档
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"));
bw.write(info);
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
五: 拓展
java 制作图像界面比较简单, 只需要熟练的掌握三大布局(流布局 表格布局 边界布局)和常用组件 , 就能制作出比较复杂的界面 . 所以理清业务逻辑, 才是重点
java中使用setClip()裁剪不规则图形
GeneralPath path = new GeneralPath();
path.moveTo(x1, y1);
path.lineTo(x2, y2);
path.lineTo(x3, y3);
path.closePath();
g.setClip(path);
可以通过这个设置
java swing 怎么绘制一个圆角矩形的面板?
设置一个圆角矩形的Border即可。
panel.setBorder(BorderFactory.createLineBorder(Color.RED, 10, true));
JAVA 实现打印用什么方法?
Print.java--打印内容定义
[code]
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
public class Print implements Printable{
int m_wPage;
int m_hPage;
int m_orientation;
Printable m_target;
int maxNumPage=1;
String title="数据表格打印";
Font titleFont=new Font("黑体",Font.BOLD,14);
boolean hasTail=true;
int tailAlign=0;
int headAlign=0;
int topSpace=0;
int leftSpace=0;
int yStart=0;
int yEnd=0;
int xStart=topSpace;
int xEnd=0;
int x=0,y=0;
String strTemp="打印内容";
public void doPrint(){
try{
m_orientation=PageFormat.PORTRAIT;
//设置打印对象,默认纸张
PrinterJob prnJob=PrinterJob.getPrinterJob();
PageFormat pageFormat=prnJob.defaultPage();
pageFormat.setOrientation(m_orientation);
m_wPage=(int)(pageFormat.getWidth());
m_hPage=(int)(pageFormat.getHeight());
//将待打印的窗体根据默认纸张设置传入打印对象
prnJob.setPrintable(this,pageFormat);
if(!prnJob.printDialog()) return;
prnJob.print();
}catch(PrinterException ex){
ex.printStackTrace();
System.err.println("打印错误:"+ex.toString());
}
}
/**
* 初始化打印参数
*/
public void initPrintParameter()
{
}
/**
*构造打印内容,以送打印机打印
*/
public int print(Graphics pg,PageFormat pageFormat,
int pageIndex) throws PrinterException{
//初始化打印参数
initPrintParameter();
//将画布设置为页面大小
pg.translate((int)pageFormat.getImageableX(),
(int)pageFormat.getImageableY());
int wPage=0;
int hPage=0;
//根据打印机页面设置调整画布大小
if(pageFormat.getOrientation()==pageFormat.PORTRAIT){
wPage=(int)pageFormat.getImageableWidth();
hPage=(int)pageFormat.getImageableHeight();
}
else{
wPage=(int)pageFormat.getImageableWidth();
wPage+=wPage/2;
hPage=(int)pageFormat.getImageableHeight();
pg.setClip(0,0,wPage,hPage);
}
wPage=wPage-2*leftSpace;
hPage=hPage-2*topSpace;
xStart=leftSpace;
xEnd=wPage-2;
//为画布设置颜色和字体
int y=topSpace;
pg.setFont(titleFont);
pg.setColor(Color.black);
//画标题,并使其居中
Font fn=pg.getFont();
FontMetrics fm=pg.getFontMetrics();
y+=fm.getAscent();
alignText(title,pg,y,xStart,xEnd,headAlign);
y+=30;
x=leftSpace+2;
Font headerFont=new Font("宋体",Font.BOLD,14);
pg.setFont(headerFont);
fm=pg.getFontMetrics();
int h=fm.getAscent();
yStart=y-1;
y+=h;
pg.setFont(headerFont);
fm=pg.getFontMetrics();
int header=y;
h=fm.getHeight();
//计算行高,每页行数,总行数和指定页码的起始行、结束行
int rowH=Math.max(h,10);
int tailH=rowH+30;
int rowPerPage=0;
int leftPix=0;
if(hasTail){
rowPerPage=(hPage-header-tailH)/rowH;
leftPix=(hPage-header-tailH)%rowH;
yEnd=hPage-leftPix-tailH+2;
}
else{
rowPerPage=(hPage-header)/rowH;
leftPix=(hPage-header)%rowH;
yEnd=hPage-leftPix+2;
}
pg.drawString(strTemp,x,y);
//画表格边框
pg.drawLine(xStart,yStart,xStart,yEnd);
pg.drawLine(xStart,yStart,xEnd,yStart);
pg.drawLine(xEnd,yStart,xEnd,yEnd);
pg.drawLine(xStart,yEnd,xEnd,yEnd);
//打印页码
if(hasTail){
int pageNumber=pageIndex+1;
String s="第"+pageNumber+"页";
alignText(s,pg,yEnd+30,xStart,xEnd,tailAlign);
}
System.gc();
return PAGE_EXISTS;
}
/**
* 文字排列,坐标在y处,显示范围(start-end)
* 0表示居中显示,1表示左对齐,2表示右对齐
*/
private void alignText(String s,Graphics pg,int y,int start,
int end,int mode){
Font fn=pg.getFont();
FontMetrics fm=pg.getFontMetrics();
int wString=fm.stringWidth(s);
int x=start;
switch(mode)
{
case 0:
if((end-start-wString)0) x=start+(end-start-wString)/2;
break;
case 1:
break;
case 2:
if((end-start-wString)0) x=start+(end-start-wString);
break;
}
pg.drawString(s,x,y);
}
public static void main(String[] args){
Print p=new Print();
p.doPrint();
}
}
[code]
运行方法:
javac -d . Print.java
java Print
自己运行一下
Java 画图重绘
这个问题,你可以尝试下下面的解决方法:
第一步,你在缓冲区画之前,先通过setClip方法限定一个区域,对于这个setClip方法的使用,api文档有很详细的说明。
第二步,你在调repaint方法时,也设定下要重绘的区域,以达到,缓冲区和前屏显的一致(因为缓冲区只是局部修改过,没必要把整个缓冲区绘出来)
Java 获取组件绘图上下文对象 的问题
没见过高手都只是动动嘴的哦??
好 我来告诉你
这个背景静态图片 非常简单...2秒后插入一张小图 也很简单
最快的方式 并不是直接贴本地的图 而是采用图形包 包里的方法
按像素点 一个点一个点的描 类似MFC里的 CBitmap
这样才不会闪烁和延迟 用到Graphics
java.awt
类 Graphics
java.lang.Object
java.awt.Graphics
直接已知子类:
DebugGraphics, Graphics2D
public abstract class Graphics
extends Object
Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。
Graphics 对象封装了 Java 支持的基本呈现操作所需的状态信息。此状态信息包括以下属性:
abstract void clearRect(int x, int y, int width, int height)
通过使用当前绘图表面的背景色进行填充来清除指定的矩形。
abstract void clipRect(int x, int y, int width, int height)
将当前剪贴区与指定的矩形相交。
abstract void copyArea(int x, int y, int width, int height, int dx, int dy)
将组件的区域复制到由 dx 和 dy 指定的距离处。
abstract Graphics create()
创建一个新的 Graphics 对象,它是此 Graphics 对象的副本。
Graphics create(int x, int y, int width, int height)
基于此 Graphics 对象创建一个新的 Graphics 对象,但是使用新的转换和剪贴区域。
abstract void dispose()
释放此图形的上下文以及它使用的所有系统资源。
void draw3DRect(int x, int y, int width, int height, boolean raised)
绘制指定矩形的 3-D 高亮显示边框。
abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
绘制一个覆盖指定矩形的圆弧或椭圆弧边框。
void drawBytes(byte[] data, int offset, int length, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定 byte 数组给定的文本。
void drawChars(char[] data, int offset, int length, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。
abstract boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
绘制指定图像中当前可用的图像。
abstract boolean drawImage(Image img, int x, int y, ImageObserver observer)
绘制指定图像中当前可用的图像。
abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。
abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。
abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)
绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
abstract void drawLine(int x1, int y1, int x2, int y2)
在此图形上下文的坐标系中,使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线。
abstract void drawOval(int x, int y, int width, int height)
绘制椭圆的边框。
abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
绘制一个由 x 和 y 坐标数组定义的闭合多边形。
void drawPolygon(Polygon p)
绘制由指定的 Polygon 对象定义的多边形边框。
abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
绘制由 x 和 y 坐标数组定义的一系列连接线。
void drawRect(int x, int y, int width, int height)
绘制指定矩形的边框。
abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
用此图形上下文的当前颜色绘制圆角矩形的边框。
abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
依据 TextAttribute 类的规范应用指定迭代器的属性,呈现迭代器的文本。
abstract void drawString(String str, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。
void fill3DRect(int x, int y, int width, int height, boolean raised)
绘制一个用当前颜色填充的 3-D 高亮显示矩形。
abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
填充覆盖指定矩形的圆弧或椭圆弧。
abstract void fillOval(int x, int y, int width, int height)
使用当前颜色填充外接指定矩形框的椭圆。
abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
填充由 x 和 y 坐标数组定义的闭合多边形。
void fillPolygon(Polygon p)
用图形上下文的当前颜色填充指定 Polygon 对象定义的多边形。
abstract void fillRect(int x, int y, int width, int height)
填充指定的矩形。
abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
用当前颜色填充指定的圆角矩形。
void finalize()
一旦不再引用此图形上下文就释放它。
abstract Shape getClip()
获取当前剪贴区域。
abstract Rectangle getClipBounds()
返回当前剪贴区域的边界矩形。
Rectangle getClipBounds(Rectangle r)
返回当前剪贴区域的边界矩形。
Rectangle getClipRect()
已过时。 从 JDK version 1.1 开始,由 getClipBounds() 取代。
abstract Color getColor()
获取此图形上下文的当前颜色。
abstract Font getFont()
获取当前字体。
FontMetrics getFontMetrics()
获取当前字体的字体规格。
abstract FontMetrics getFontMetrics(Font f)
获取指定字体的字体规格。
boolean hitClip(int x, int y, int width, int height)
如果指定的矩形区域与当前的剪贴区域相交,则返回 true。
abstract void setClip(int x, int y, int width, int height)
将当前剪贴区设置为由给定坐标指定的矩形。
abstract void setClip(Shape clip)
将当前剪贴区域设置为任意的剪贴形状。
abstract void setColor(Color c)
将此图形上下文的当前颜色设置为指定颜色。
abstract void setFont(Font font)
将此图形上下文的字体设置为指定字体。
abstract void setPaintMode()
设置将此图形上下文的绘图模式,以便通过此图形上下文中的当前颜色来覆盖目标。
abstract void setXORMode(Color c1)
将此图形上下文的绘图模式设置为在此图形上下文的当前颜色和新的指定颜色之间交替。
String toString()
返回表示此 Graphics 对象值的 String 对象。
abstract void translate(int x, int y)
将图形上下文的原点平移到当前坐标系中的点 (x, y)。
setclipjava的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、setclipjava的信息别忘了在本站进行查找喔。