JavaSwing控件的属性配置和优势
最近学习了有关JavaGUI的相关的知识,个人感觉和Android控件的设置有点类似,可以设置布局,填充数据,以及设置监听事件等等,面对新的API,想通过近期的几篇博客把遇到的问题,和有关JavaGUI新鲜的地方总结下来,和大家共同分享自己的想法和编程的乐趣。
JComponent与AWT的继承关系
在有关JavaGUI的继承关系中有这样的一个原则那就是控件在前容器在后,也就是说容器是作为控件的子类存在的,有关JComponent的继承关系大概是这样的:
java.lang.Object>>java.awt.Component>>java.awt.Container>>javax.swing.JComponent。
熟悉继承关系能进一步的了解各个类之间的关系,同时也方便自己对各个类内部方法调用的理解和认识。
JFrame.getContentPane()自带容器
这个方法返回的是一个JFrame的容器,和其他的容器一样,该容器一样可以进行添加控件设置背景色等操作,不同的是由于是从JFrame中直接拿到的容器所以不需要将该容器往JFrame中进行添加。进行简单的设置和添加控件之后我们就可以按照JFrame的常用步骤进行相关的操作就可以了:
class TestJFrame{public static void main(){JFrame jf=new JFrame("TestJFrame");Container ct=jf.getContentPane();ct.setlayout(new FlowLayout(FlowLayout.LEFT,20,20));JLable hello=new JLabel("你好!");JLabel bye=new JLable("再见");hello.setOpaque(true);hello.setBackground(Color.RED);ct.add(hello);ct.add(bye);ct.setBackground(Color.BLUE);jf.setSize(300,200);jf.setLocation(10,10);jf.addWindowListener(new WindowAdapter(){@overridepublic void windowClosing(WindowEvent e){System.exit(0);}});}
}
有关AWT.Label中的乱码问题
在使用Label的时候如果我们使用的AWT中的Label控件的话,如果我们在改控件中添加了文字在运行之后就会出现乱码的问题,解决的方案是一方面我们可以在RunConfigurations中设置,另外一个方面就是直接弃用Label而是选择使用Swing下的JLabel,这样的话如果在项目的编码方式中我们选用的是UTF-8那么乱码现象就会消失。
JFrame的两种窗口关闭方式
JFrame窗口的关闭方式目前学到的主要有两种一种是通过调用addWindowListener()方法来实现,另外一种方式就是通过直接调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)达到关闭窗口的目的。具体编码如下:
public static void main(){JFrame jf=new JFrame("TestClose");//实现方式一jf.addWindowListener(new WindowAdapter(){@overridepublic void windowClosing(WindowEvent e){System.exit(0);}});//实现方式二jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
总结:
有关JFrame的使用要注意的就是一方面是他自带容器的利用,这个容器无需添加,另外一个方面就是常见的配置流程:在创建对象的时候传入字符串,添加控件,设置大小以及Location,设置窗口的关闭方式,最后通过调用JFram.setVisible(ture)实现Frame的显示。