zoukankan      html  css  js  c++  java
  • 终于写好了!一个全新的java Swing界面应用的源程序

    这个关于java swing界面的程序是我以前写过的代码。现在只是更新了好多功能和改善了界面,使界面更加的友好,同时也使程序更加的稳定可靠,即使如此这个程序在运行时还是有缺陷。例如加载网络图片时,就显得有点卡,不知道是不是网速的原因,而且对网络图片的操作也使得整个界面变得响应缓慢。如果你是个高手,我相信你完全可以自己去改善这个程序,最终使这个程序变得更完美,这个程序我还要在后续的工作中进行改善。其实java做界面,特别是本地客户端的应用软件,java完全表现失败。试想一下,一个用户为了运行一个java程序,不得不安装一个用户并不想安装的显得又大又笨拙的虚拟机!而且运行时它的速度有时候就像是狗爬!这可真是玩笑,但却是真的,怪不得java会在本地应用方面彻底败给C++。要是脱离了网络这个大环境java的发展或许根本就没有现在这么好!java现在好像也不是很春风得意,毕竟有那么多的语言在虎视眈眈,试图取代java的地位。java的母公司SUN被甲骨文收购,真的不知道是一件好事还是坏事。闲话不多说了!这个程序比较的大,有一千多行(其实也不大啦),我把源程序制成压缩包上传到CSDN上面,其中CutImg类是单独的一个文件,有兴趣的朋友可以自己去下,其中要注意的是剪切功能只能实现对本地图片,还不能实现对网络图片的剪切,java高手可以自己实现这个功能,下面给出转向下载页面的文字链接:

    文字链接:http://download.csdn.net/download/zhulike2011/5524851

    下面是其中的一些片段:

    public void paint(Graphics g){   //小球画图的方法,利用Graphics类进行绘图
            g.setColor(pane.getBackground());  //这条语句用于擦除小球轨迹,让这条语句不起作用你就知道了
            g.fillOval(tempX, tempY, XSIZE, YSIZE);
            g.setColor(c);       
            g.fillOval(x, y, XSIZE, YSIZE);
            tempX=x;tempY=y;
             
        } 

    public void move(Rectangle2D  g){   //这个方法用于控制小球运动,用于判断小球是否到达边界
            x += dx;
            y += dy;
            if(x<2){
               dx = -dx;
            }
            if(x+XSIZE>retangleX){
                dx = -dx;
            }
            if(y<g.getMinY()+YSIZE){  
                dy =  -dy;
            }
            if(y+YSIZE+40>=retangleY){            
               dy = -dy;
            }
        }
    /**
         * 剪切板中是否有文本数据可供粘贴
         *  
         * @return true为有文本数据
         */  
        public boolean isClipboardString() {  
            boolean b = false;  
            Clipboard clipboard = this.getToolkit().getSystemClipboard();  
            Transferable content = clipboard.getContents(this);  
            try {  
                if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {  
                    b = true;  
                }  
            } catch (Exception e) {  
            }  
            return b;  
        } 

    //这个方法用于读取图片

    try {
                img=ImageIO.read(
                        new File("D:\\My Documents\\My Pictures\\SB.gif" ));//不能显示动态,只是静态的
                img=img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
                beiJing= new ImageIcon(img );
                
            } catch (IOException e) {        
                e.printStackTrace();
            }

    下面是构造器方法,如果你能看懂这个构造器的作用,那这整个程序,你就可以写出来了!

    public TestDemo(){
            
            cot=this.getContentPane();
            
            setSize(700,500);
            pane =new BeiJingPane(this.getWidth(),this.getHeight());
            panBall=new XiaoQiuPane(this.getWidth(),this.getHeight());
            clearityPane=new JPanel();
            clearityPane.setVisible(true);   
            clearityPane.setOpaque(false);  //透明效果
            clearityPane.setBounds(new Rectangle(700,450));
            panBall.setLayout(new BorderLayout());
            buttonBallPane.add(changeBackColor);
            buttonBallPane.add(changeBallColor);
            buttonBallPane.add(start_ball);
            buttonBall.setLayout(new BorderLayout());
            buttonBall.setBackground(Color.red);
            buttonBall.add(buttonBallPane, BorderLayout.SOUTH);
            
            label.setSize(100, 150);
            
            
            
            ball=new BallDemo(this.getSize().width-20,this.getSize().height-30,buttonBall);
            
            
            
            clearityPane.add(bbb);
            pane.setLayout(new BorderLayout());       
            bbb.setVisible(false);
            
            panBall.add(clearityPane,BorderLayout.CENTER);  //添加透明面板       
            buttonpane.add(changePicture);
            buttonpane.add(changeColor);
            buttonpane.add(start_retangle);
            
            
            panBall.add(buttonpane, BorderLayout.SOUTH);
            
            
            
            //cot.add(pane);
            panButton.add(bt);
            panButton.add(bt0);
            panButton.add(bt1);
            panButton.add(bt2);
            panButton.add(bt3);
            panButton.add(bt4);
         
            menuBar.add(menuOpen);
            menuBar.add(menuNative);
            menuBar.add(menuNet);
            menuBar.add(menuQuit);
            menuBar.add(menuSave);
            pane.add(panButton,BorderLayout.SOUTH);
            pane.add(menuBar,BorderLayout.NORTH);       
            pane.add(label,BorderLayout.CENTER);
            
            
            
            
            
            changePicture.addActionListener(this);
            changeColor.addActionListener(this);
            changeBallColor.addActionListener(this);
            changeBackColor.addActionListener(this);
            start_retangle.addActionListener(this);  //给矩形小球启动按钮注册监听
            start_ball.addActionListener(this);      //给小球启动按钮注册监听
            
            pane.addMouseListener(this);
            
            bt0.addActionListener(this);
            bt.addActionListener(this);
            bt1.addActionListener(this);
            bt2.addActionListener(this);
            bt3.addActionListener(this);
            bt4.addActionListener(this);
            label.addMouseListener(this);//给图片注册监听
            menuSave.addMouseListener(this);
            menuOpen.addMouseListener(this);       
            menuNative.addMouseListener(this);
            menuNet.addMouseListener(this);
            menuQuit.addMouseListener(this);
            
            
            
            jtp.addChangeListener(this); //给选项卡注册变化接口监听
            jtp.add("默认面板",pane);
            jtp.add("矩形小球运动", panBall);
            jtp.add("小球运动", buttonBall);
            cot.add(jtp);
            this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            setVisible(true);    
        }     

    下面是效果图:


  • 相关阅读:
    Win32K里的死循环
    Oracle 经常使用命令小结
    ImageView 会盖掉ScrollView的OnTouchListener,监听Activity的手势
    怎样安装pip--python的包管理工具
    设计模式-模板方法
    django中怎样生成非HTML格式的内容。
    SharePoint 2013 设置自己定义布局页
    Android读写JSON格式的数据之JsonWriter和JsonReader
    基于Linux 3.0.8 Samsung FIMC(S5PV210) 的摄像头驱动框架解读(一)
    BZOJ-1923-外星千足虫-SDOI2010
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3119807.html
Copyright © 2011-2022 走看看