问题描述
packageframe;importmain.Main;importjava.awt.Dimension;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.Point;importjava.awt.Toolkit;importjava.awt.image.BufferedImage;importjavax.swing.JFrame;publicclassChampionFrameextendsJFrame{privateStringm_strFrameName;//窗体名称privatePointm_ptFrameLocation;//窗体位置privateDimensionm_dmsFrameSize;//窗体大小privatebooleanm_bVisible;//窗体是否可见//背景图片ImageprivatestaticImageIMG_BACKGROUND=Toolkit.getDefaultToolkit().getImage(System.getProperty("user.dir")+"/LOLRes/images/champions/Yasuo_Splash_0.jpg");/******构造函数******//******初始化各个变量******/publicChampionFrame(StringFrameName,intFrameX,intFrameY,intFrameWidth,intFrameHeight){/*该构造函数,窗口的位置由参数决定*/m_strFrameName=FrameName;m_ptFrameLocation=newPoint(FrameX,FrameY);m_dmsFrameSize=newDimension(FrameWidth,FrameHeight);m_bVisible=true;InitFrame();}/******构造函数******//******初始化各个变量******/publicChampionFrame(StringFrameName,intFrameWidth,intFrameHeight){/*该构造函数,窗口的位置由计算机屏幕大小决定,窗口位于计算机正中央*/m_strFrameName=FrameName;m_dmsFrameSize=newDimension(FrameWidth,FrameHeight);m_ptFrameLocation=newPoint((Main.SCREEN_SIZE.width-m_dmsFrameSize.width)/2,(Main.SCREEN_SIZE.height-m_dmsFrameSize.height)/2);m_bVisible=true;InitFrame();}/******窗体初始化函数******//******设置窗体变量******/publicvoidInitFrame(){this.setTitle(m_strFrameName);this.setLocation(m_ptFrameLocation);this.setSize(m_dmsFrameSize);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(m_bVisible);}publicvoidpaint(Graphicsg){//双缓冲BufferedImagebufferedImage=newBufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_INT_RGB);Graphicsg_Buffer=bufferedImage.createGraphics();//画背景图片g_Buffer.drawImage(IMG_BACKGROUND,0,0,this);g.drawImage(bufferedImage,0,0,this);}}
请问如果我要在窗口上添加一个JTextField输入框,怎么添加?//Java初学者,求教!!详细点,我怕我看不懂
解决方案
解决方案二:
建议还是百度吧,SWT这个现在做的人比较少了,楼主养成自己找答案的习惯,效率比较高
解决方案三:
publicvoidInitFrame(){this.setTitle(m_strFrameName);this.setLocation(m_ptFrameLocation);this.setSize(m_dmsFrameSize);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.getContentPane().add(newJTextField(),BorderLayout.NORTH);//没测试,直接写的。this.setVisible(m_bVisible);}
解决方案四:
引用1楼fan578的回复:
建议还是百度吧,SWT这个现在做的人比较少了,楼主养成自己找答案的习惯,效率比较高
前半句:这个是Swing的,java自带。SWT是eclipse的。后半句:赞同,希望楼主注意。
解决方案五:
引用2楼stonefeng的回复:
publicvoidInitFrame(){this.setTitle(m_strFrameName);this.setLocation(m_ptFrameLocation);this.setSize(m_dmsFrameSize);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.getContentPane().add(newJTextField(),BorderLayout.NORTH);//没测试,直接写的。this.setVisible(m_bVisible);}
这个方法其实我之前就试过了,因此产生了一个问题窗口重绘前:由于某种原因,窗口重绘,结果出现:结果组件被背景图覆盖了其实并不是我不百度,可能是我关键字没用好,老是百度不出原因,无奈之下才来求助论坛求不吝赐教!!谢谢!!真的很苦恼这个问题,或许是我某些东西还没接触到的原因
解决方案六:
给JFrame设置背景色网上有很多例子,不需要重写paint,而且你没有调用父类的super.paint(g),现在的问题可能就是这个引起的
解决方案七:
引用5楼jacky4631的回复:
给JFrame设置背景色网上有很多例子,不需要重写paint,而且你没有调用父类的super.paint(g),现在的问题可能就是这个引起的
刚刚试了添加了,结果还是一样,组件会被图覆盖了