JavaSE12—窗体程序开发(上)
JavaSE12—窗体程序开发(上)
1.JFrame窗体
JFrame类定义了生成窗体的模板,每实例化一个窗体类,就产生了一个窗体。创建窗体后,可以像窗体添加组件,同时为组件添加时间监听器,处理一些最大化,最小化,关闭,调整大小等窗体事件。
定义自己的窗体,最常用的方法就是继承JFrame类并扩展为自己的窗体类,这个扩展的窗体类应该定义好窗体的界面和事件监听以及所有业务处理方法。
JFrame构造方法有以下两种:
public JFrame()
默认构造方法,这种构造方法创建了一个初始不可见,没有标题的新窗口。
public JFrame(String title)
创建一个不可见,具有标题的窗体,窗体的标题为创建窗体给定的String类型的参数。
自定义窗体对象的实例:
import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JLabel;public class DemoFrame extends JFrame {public static void main(String[] args){EventQueue.invokeLater(new Runnable(){public void run(){try{DemoFrame frame = new DemoFrame();frame.setVisible(true);}catch(Exception e){e.printStackTrace();}}});}public DemoFrame(){super();setTitle("JFrameTest");setBounds(100,100,267,118);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);final JLabel label = new JLabel();label.setText("Hello world");getContentPane().add(label,BorderLayout.CENTER);}}import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class JPanelDemo extends JFrame {public JPanelDemo(){Container c = getContentPane();c.setLayout(new GridLayout(2,2,2,2));//将容器设置成两行两列JPanel p1 = new JPanel(new BorderLayout());JPanel p2 = new JPanel(new BorderLayout());JPanel p3 = new JPanel(new BorderLayout());JPanel p4 = new JPanel(new BorderLayout());p1.add(new JButton("p1"));p2.add(new JButton("p2"));p3.add(new JButton("p3"));p4.add(new JButton("p4"));c.add(p1);c.add(p2);c.add(p3);c.add(p4);setVisible(true);setBounds(100,100,400,300);pack();}public static void main(String[] args){new JPanelDemo();}}2)JScrollPane面板import java.awt.Color;import java.awt.Container;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.WindowConstants;public class JScrollPaneDemo extends JFrame{public JScrollPaneDemo(){Container c = getContentPane();JTextArea jta = new JTextArea(20,50);JScrollPane jspane = new JScrollPane(jta);c.add(jspane);setTitle("Hello Text");setSize(200,200);setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args){new JScrollPaneDemo();}}import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JSplitPane;public class SplitPaneFrameDemo extends JFrame{public SplitPaneFrameDemo(){setTitle("USE SPLITPANE");setBounds(100,100,200,160);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);final JSplitPane hSplitPane = new JSplitPane(); JButton labelLeft = new JButton("LEFT");final JSplitPane vSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);JLabel labelTop = new JLabel("TOP");JLabel labelBottom = new JLabel("BOTTOM");vSplitPane.setTopComponent(labelTop);vSplitPane.setBottomComponent(labelBottom);vSplitPane.setDividerLocation(40);hSplitPane.setLeftComponent(labelLeft);hSplitPane.setRightComponent(vSplitPane);hSplitPane.setDividerLocation(40);hSplitPane.setOneTouchExpandable(true);//分隔条小部件getContentPane().add(hSplitPane);}public static void main(String[] args){SplitPaneFrameDemo splitPaneFrame = new SplitPaneFrameDemo();splitPaneFrame.setVisible(true);}}package qijia.si;import java.awt.BorderLayout;import java.net.URL;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JRadioButton;import javax.swing.JTabbedPane;import javax.swing.JTextArea;public class JTabblePaneDemo extends JFrame{public JTabblePaneDemo(){super();setTitle("JTabblePaneTEST");setBounds(100,100,220,180);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);final JTabbedPane tabbedPane = new JTabbedPane();final JButton button = new JButton("Press me");URL url1 = JTabblePaneDemo.class.getResource("1.gif");Icon icon1 = new ImageIcon(url1);tabbedPane.addTab("选项卡一", icon1,button,"这里使用了按钮");final JCheckBox checkBox = new JCheckBox("复选框");tabbedPane.addTab("选项卡二",null,checkBox,null);URL url2 = JTabblePaneDemo.class.getResource("2.gif");Icon icon2 = new ImageIcon(url2);tabbedPane.setIconAt(1, icon2);JTextArea textArea = new JTextArea("文本域");URL url3 = JTabblePaneDemo.class.getResource("3.gif");Icon icon3 = new ImageIcon(url3);tabbedPane.addTab("选项卡三", icon3,textArea,null);tabbedPane.setToolTipTextAt(2, "这是文本域");final JRadioButton radioButton = new JRadioButton("单选按钮");URL url4 = JTabblePaneDemo.class.getResource("4.gif");Icon icon4 = new ImageIcon(url4);tabbedPane.addTab("选项卡四", icon4,radioButton,null);getContentPane().add(tabbedPane,BorderLayout.CENTER);}public static void main(String[] args){JTabblePaneDemo tabbedPaneFrame = new JTabblePaneDemo();tabbedPaneFrame.setVisible(true);}}