java代码的打印信息控件怎么做?或者有现成的代码也行。

java代码的打印信息控件怎么做?或者有现成的代码也行。,第1张

一: 首先理清业务逻辑

两个窗口, 第一个主窗口, 是用于填写信息的, 点击按钮后,跳转到第二个窗口,.

第二个对话框窗口 ,用于显示需要打印的信息, 以及打印到文档

二: 确定需要的技术, 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 制作图像界面比较简单,  只需要熟练的掌握三大布局(流布局 表格布局 边界布局)和常用组件  , 就能制作出比较复杂的界面 .  所以理清业务逻辑,  才是重点

在按钮的ActionPerformed函数中:

PrinterJob pj=PrinterJob.getPrinterJob()

pj.setPrintable(newPrintable());//设置打印类,关于打印类如何实现直接看API

if(pj.printDialog()){

try{

pj.print() //进行打印

}catch(PrinterExceptione){

System.out.println(e)

}

希望能帮到你了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11750616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存