注册 登录
编程论坛 JAVA论坛

功能性错误,请各位帮忙!

yf453635634 发布于 2016-03-13 22:16, 1945 次点击
运行后,弹出的窗口 输入数字 会实现一个简单的加法运算,但总会把第一个加数丢失,请朋友们帮忙看看是什么原因!

程序代码:
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();
        }
    }
}
0 回复
1