import javax.swing.*; public class KyodaiUI extends JFrame { …?BR>} |
JPanel panel = new JPanel(); JButton button = new JButton(); panel.add(button); |
![]() |
import java.awt.*; import javax.swing.*; public class KyodaiUI extends JFrame { public KyodaiUI() { this.setSize(780Q?500); //窗体的大小讑֮?80*500 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); //H体不能改变大小 this.setTitle("q连?); //讄标题 JPanel toolBar = new JPanel(); toolBar.setBackground(Color.white); toolBar.setPreferredSize(new Dimension(780Q?48)); JPanel actionPanel = new JPanel(); //新徏JPanel型的控g actionPanel.setBackground(Color.yellow); //讄背景?BR>actionPanel.setPreferredSize(new Dimension(160Q?380)); //讄大小 JPanel contentPanel = new JPanel(); contentPanel.setBackground(Color.blue); contentPanel.setPreferredSize(new Dimension(620Q?380)); this.getContentPane().add(toolBarQ?BorderLayout.NORTH); this.getContentPane().add(actionPanelQ?BorderLayout.EAST); this.getContentPane().add(contentPanelQ?BorderLayout.CENTER); } public static void main(String[] args) throws HeadlessException { KyodaiUI kyodaiUI = new KyodaiUI(); kyodaiUI.show(); } } |
![]() |
Border border = BorderFactory.createBevelBorder(BevelBorder.LOWEREDQ?BR>new Color(45Q?92Q?162)Q?BR>new Color(43Q?66Q?97)Q?BR>new Color(45Q?92Q?162)Q?BR>new Color(84Q?123Q?200)); |
现在Q我们将toolBar.setBackground(Color.white)改ؓ(f)toolBar.setBorder(border)Q立体效果是不是已经出现?jin)?BR>
实战——写上自q大名
现在我们已经有了(jin)一个能够运行的界面?jin),虽然它什么也做不?jin),但是请你别慌Q罗马不是一天徏成的?BR>
现在让我们在菜单区提供一个“关于”菜单,用来昄E序的信息,N你不惌别h知道你的大名吗?Swing本n提供了(jin)现成的按钮控件JButtonQ我们只需要创Z个新的按?JButton about = new JButton("关于");q个按钮该怎么攑ֈ菜单不是别的地方呢Q我们可以加入下面的代码:toolBar.add(about);咦,怎么Ҏ(gu)钮没有反应?q是因ؓ(f)你还没有告诉E序点击按钮时要做什么事情呢。要为按钮添加事件响应,首先需要用about.addActionListener(this)来告诉程序监听按钮按下时的事Ӟ׃ActionListener是一个程序接口,因此Q我们在cȝx的地方也得做一点小的修改:public class KyodaiUI extends JFrame implements ActionListener {...}实现ActionListener接口是ؓ(f)?jin)告诉程序我要进行事件处理?jin)。当?dng)最后我们得d响应事g的代?
public void actionPerformed(ActionEvent e) {
if (e.getSource() == about) {
JOptionPane.showMessageDialog(thisQ?"我的大名"Q?"关于"Q?BR>JOptionPane.INFORMATION_MESSAGE);
return ;
}
}
其中Qe.getSource() 表示当前触发事g的控Ӟ׃我们的程序中往往?x)有多个以上的控Ӟq些控g都有可能产生事gQ所以我们必M用这个方法来扑ֈ产生事情的控件?BR>
结
让我们一h回顾一下今天所学的内容:首先我们?jin)解了(jin)顶层容器,也知道?jin)控g分ؓ(f)容器控g和非容器控gQ同时还知道使用Ҏ(gu)Q最后,我们q小的处理?jin)一下按钮的事g?BR>
学而时?fn)之Q不亦说乎,p我留点小的作业Q帮助大家mZ下今天所学的内容:上面我们d的按钮在菜单栏的中间Qƈ不美观,请大家放到左Ҏ(gu)双试试?BR>
最后向大家提供一些比较好的参考资?
●Creating a GUI with JFC/Swing
http://java.sun.com/docs/books/tutorial/uiswing/index.html
?D Graphics
http://java.sun.com/docs/books/tutorial/2d/index.html
●JDK API
http://java.sun.com/j2se/1.4.2/docs/api/index.html