代码如下:
import java.awt.*import java.awt.event.*
import javax.swing.*
public class GraExp extends JFrame
{
CInstead c1=new CInstead()
Container c
JLabel lbl1=new JLabel("姓名:" )
JLabel lbl2=new JLabel("密码:" )
JTextField tf1=new JTextField(10),
tf2=new JTextField(10)
public GraExp()
{
setContentPane(c1)
c=getContentPane()
c.setLayout(new FlowLayout(FlowLayout.LEFT))
c.add(lbl1)
c.add(tf1)
c.add(lbl2)
c.add(tf2)
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
setSize(new Dimension(400,300))
show()
}
public static void main(String[] args)
{
GraExp ge=new GraExp()
}
class CInstead extends JPanel
{
ImageIcon icon
Image img
public CInstead()
{
icon=new ImageIcon(GraExp.class.getResource("333.png" ))
img=icon.getImage()
}
public void paintComponent(Graphics g)
{
super.paintComponent(g)
g.drawImage(img,0,0,null )
}
}
}
程序分析:
JComponent.paint先绘制组件,然后绘制组件的边框,再绘制组件的子组件。调用的顺序确保组件、边框和子组件都是可视的。如果组件有一个 UI代表,则JComponent.paintComponent调用该代表的Update方法,该方法为不透明组件擦除背景,然后绘制组件。
CInstead是一个不透明的组件,如果重载paint方法,其背景图是无法被擦除的,因此,即使更新了组件的所有包含组件,在界面上是看不到的。所以必须重载paintComponent方法,在绘制子组件前先擦除背景。
对双缓存组件,paint方法负责把组件绘制到屏外缓存中,然后把屏外缓存拷贝到组件的屏上代表中,正因为如此,不建议为Swing组件重载paint,如果需要重新定义如何绘制组件,那么就重载paintComponent()。
/** 给个例子你看下吧 同学, 开发swing 最好的利剑 莫过于 NetBeans 6 了 * 用手写也 不用 怎样 很简单 new 一个控件 add 进 去 就 可以了* 希望对你有用 同学*/import java.awt.FlowLayoutimport javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JList
import javax.swing.JPanel
import javax.swing.SwingUtilities
import javax.swing.WindowConstants
public class download extends JFrame { /**
* @param args
*/
JFrame j
public download(){
j = new JFrame("java tcp/ip 下载")
j.setBounds(100, 100, 800, 600) // 实例 一 窗体
j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)//JJFrame.EXIT_ON_CLOSE
j.getContentPane().setLayout(new FlowLayout(ABORT)) //布局设置
JPanel p = new JPanel()
p.setBounds(100, 100, 100, 100)
p.setLayout(new FlowLayout())
JButton jbtn = new JButton()
jbtn.setText("下载")
p.setSize(100, 100)
String[] data = {"one", "two", "three", "four"}
JList myList = new JList(data)
add(myList)
p.add(jbtn)p.add(myList) // 将 button list 控件 添加 panel 中
j.getContentPane().add(p) // 将 panel 添加 进窗体
j.pack() //自动适应窗体大小
j.setVisible(true)}
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable(){
public void run() {
// TODO Auto-generated method stub
new download()
}
})
}}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)