標籤:
Swing作為AWT組件的“強化版”,它的產生主要是為了克服AWT構建的GUI,無法在所有平台都通用的問題。允許編程人員跨平台時指定統一的GUI顯示風格也是Swing的最大優勢。Swing是AWT的補充,而非取代者。
以下是Swing包的階層和繼承關係。
javax.swingClass JComponent
-
-
All Implemented Interfaces:
-
ImageObserver, MenuContainer, Serializable
-
Direct Known Subclasses:
-
AbstractButton, BasicInternalFrameTitlePane, Box, Box.Filler, JColorChooser, JComboBox, JFileChooser, JInternalFrame, JInternalFrame.JDesktopIcon, JLabel, JLayer, JLayeredPane, JList, JMenuBar, JOptionPane,JPanel, JPopupMenu, JProgressBar, JRootPane, JScrollBar, JScrollPane, JSeparator, JSlider, JSpinner, JSplitPane, JTabbedPane, JTable, JTableHeader, JTextComponent, JToolBar, JToolTip, JTree, JViewport
-
Swing容器主要有兩種,即Window和panel,window視窗又分成兩種:JFrame(表單)和Jdialog(對話方塊),panel面板又有兩種:JPanel面板和JScrollPane(帶捲軸)的面板。JPanel必須放入到JFrame這樣的頂級容器中使用,可以說JPanel是為了更為精緻的布局。
-
視窗的編程實現步驟:
1、繼承Jframe類(Jdialog類)
2、執行個體化一個Jframe對象(Jdialog對象),並調用getContentPane()方法將表單轉化成容器;
3、設定對象的各項參數(表單大小等),設定關閉方式(如果不設定,預設為windows常規關閉方式),完成視窗的實現。
下面,我們看一個簡單的例子。
public class Jlayout extends JFrame{
public void CreateJframe(String title){
JFrame jf=new JFrame(title);//執行個體化一個表單對象
Container ct=jf.getContentPane();//將表單轉化成容器
//JLabel jl=new JLabel("JFrame表單樣本");//
//jl.setHorizontalAlignment(SwingConstants.CENTER);//設定標籤文字的對齊
//ct.add(jl);//將標籤添加到容器中
ct.setBackground(Color.white);//設定背景色
//ct.setLayout(null);
jf.setVisible(true);
jf.setSize(200, 150);//設定大小
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JButton bt=new JButton("點我啊");//定義一個按鈕
bt.setHorizontalAlignment(SwingConstants.CENTER);
bt.setBounds(10, 10, 100, 21);
bt.addActionListener(new ActionListener(){//(new ActionLinstener(){
public void actionPerformed(ActionEvent e){
new Jd(Jlayout.this).setVisible(true);
}
});
ct.add(bt);
}
class Jd extends JDialog{
public Jd(Jlayout frame){
super(frame,"對話方塊",true);
Container ct=getContentPane();
ct.add(new JLabel("讓你點你就點啊"));
setBounds(120,120,100,100);
}
}
public static void main(String args[]){
new Jlayout().CreateJframe("");
}
}
Swing編程概述