功能性错误,请各位帮忙!
运行后,弹出的窗口 输入数字 会实现一个简单的加法运算,但总会把第一个加数丢失,请朋友们帮忙看看是什么原因!程序代码:
package 练习代码; import java.awt.Graphics; import java.awt.PrintJob; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; public class Example9_24 { public static void main(String args[]) { MyFrame f = new MyFrame(); f.setBounds(70, 70, 570, 289); f.setVisible(true); f.validate(); } } class MyFrame extends JFrame implements ActionListener { PrintJob p = null; Graphics g = null; JTextArea text = new JTextArea(10,10); JButton printTextField = new JButton("打印文本框"), printFrame = new JButton("打印窗口"), printButton = new JButton("打印按钮"); MyFrame() { super("在应用程序中打印"); printTextField.addActionListener(this); printFrame.addActionListener(this); printButton.addActionListener(this); add(text, "Center"); JPanel panel = new JPanel(); panel.add(printTextField); panel.add(printFrame); panel.add(printButton); add(panel, "South"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource() == printTextField) { p = getToolkit().getPrintJob(this, "ok", null); g = p.getGraphics(); //p用于获取一个用于打印的Graghics对象 g.translate(120, 200); text.printAll(g); g.dispose(); //释放此图形的上下文以及它使用的所有系统资源。调用 dispose之后,就不能再使用 Graphics对象 p.end(); } else if(e.getSource() == printFrame) { p = getToolkit().getPrintJob(this, "ok", null); g = p.getGraphics(); //p用于获取一个用于打印的Graghics对象 g.translate(120, 200); this.printAll(g); g.dispose(); p.end(); } else if(e.getSource() == printButton) { p = getToolkit().getPrintJob(this, "ok", null); g = p.getGraphics(); //p用于获取一个用于打印的Graghics对象 g.translate(120, 200); printTextField.printAll(g); g.translate(78, 0); g.dispose(); printFrame.printAll(g); g.translate(66, 0); printButton.printAll(g); g.dispose(); p.end(); } } }