Java基础知识学习总结(2)

  在Java中,Frame被设计成放置组件的容器,可以将用户界面元素放置其中,JComponent就是一种组件(component本身就意为组件)。所以,现在我们可以在JComponent中书写一些文字,并将其放置在Frame中:

1 package notHelloWorld; 2 3 import java.awt.*; 4 import javax.swing.*; 5 6 public class NotHelloWorld { 7 public static void main(String[] args) { 8 EventQueue.invokeLater(new Runnable() { 9 public void run() { 10 JFrame frame = new NotHelloWorldFrame(); 11 frame.setTitle("NotHelloWorld"); 12 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 13 frame.setVisible(true); 14 } 15 }); 16 } 17 } 18 19 class NotHelloWorldFrame extends JFrame { 20 21 //构造器 22 public NotHelloWorldFrame() { 23 //在框架中add组件并pack。 24 //当然也可以不必扩展JFrame类,可以直接在第10行new一个JFrame对象,并在其后add组件。 25 //这里我们没有设置框架的长宽,因为组件JComponent有长宽,框架会根据组件的大小调整自己的长宽。 26 add(new NotHelloWorldComponent()); 27 pack(); 28 } 29 } 30 31 class NotHelloWorldComponent extends JComponent { 32 public static final int MASSAGE_X = 75; 33 public static final int MASSAGE_Y = 100; 34 35 private static final int DEFAULT_WIDTH = 300; 36 private static final int DEFAULT_HEIGHT = 200; 37 38 //必须覆盖paintComponent方法才能让组件自己把自己画出来。 39 //这个方法需要一个Graphics对象,在Java中,所有绘制必须使用Graphics对象。 40 public void paintComponent(Graphics g) { 41 //画出一个字符串,并设置自组件左上角(0,0)开始显示的位置。 42 g.drawString("Not a 'Hello, World!' program.", MASSAGE_X, MASSAGE_Y); 43 } 44 45 //还要覆盖此方法以确定组件的首选长宽。 46 public Dimension getPreferredSize() { 47 return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT); 48 } 49 }

  运行:

Java基础知识学习总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/98f199327fd1813fc14b03e54b3aeee7.html