📄 s07.htm
字号:
import java.util.*; <p>public class Test extends JApplet {<br> JDesktopPane desktopPane = new JDesktopPane();</p> <p> JInternalFrame jif = new JInternalFrame(<br> "Internal Frame ", // title<br> true, // resizable<br> true, // closable<br> true, // maximizable<br> true); // iconifiable</p> <p> JScrollBar scrollbar = new JScrollBar();<br> JSlider slider = new JSlider();<br> JToolBar toolbar = new JToolBar();<br> JTree tree = new JTree();</p> <p> public void init() {<br> Container contentPane = getContentPane();</p> <p><br> jif.setPreferredSize(new Dimension(550, 450));<br> jif.getContentPane().setLayout(new FlowLayout());<br> jif.getContentPane().add(new ComponentPanel());</p> <p> desktopPane.setLayout(new FlowLayout());<br> desktopPane.add(jif);</p> <p> contentPane.add(new ControlPanel(), BorderLayout.NORTH);<br> contentPane.add(desktopPane, BorderLayout.CENTER);</p> <p> }<br> class ComponentPanel extends JPanel {<br> public ComponentPanel() {<br> JPanel panel = new JPanel();</p> <p> setLayout(new BorderLayout());<br> add(toolbar, BorderLayout.NORTH);<br> add(panel, BorderLayout.CENTER);</p> <p> panel.add(scrollbar);<br> panel.add(slider);<br> panel.add(new JScrollPane(tree));</p> <p> tree.setPreferredSize(new Dimension(200,100));</p> <p> toolbar.add(new JButton("button"));<br> }<br> }<br> class ControlPanel extends JPanel {<br> JCheckBox rollover = new JCheckBox(<br> "JToolBar.rollover");<br> JCheckBox palette = new JCheckBox(<br> "JInternalFrame.palette");<br> JCheckBox filled = new JCheckBox(<br> "JSlider.isFilled");<br> JCheckBox freeStanding = new JCheckBox(<br> " JScrollBar.freeStanding");</p> <p> JRadioButton none = new JRadioButton("none");<br> JRadioButton horizontal = new JRadioButton("horizontal");<br> JRadioButton angled = new JRadioButton("angled");</p> <p> public ControlPanel() {<br> ActionListener checkBoxListener = <br> new CheckBoxListener();<br> ActionListener radioButtonListener = <br> new RadioButtonListener();</p> <p> palette.addActionListener(checkBoxListener);<br> filled.addActionListener(checkBoxListener);<br> rollover.addActionListener(checkBoxListener);<br> freeStanding.addActionListener(checkBoxListener);</p> <p> none.addActionListener(radioButtonListener);<br> horizontal.addActionListener(radioButtonListener);<br> angled.addActionListener(radioButtonListener);</p> <p> ButtonGroup group = new ButtonGroup();<br> group.add(none);<br> group.add(horizontal);<br> group.add(filled);</p> <p> none.setSelected(true);<br> freeStanding.setSelected(true);<br> <br> add(palette);<br> add(filled);<br> add(rollover);<br> add(freeStanding);<br> add(Box.createHorizontalStrut(10));<br> add(new JLabel("Tree: "));<br> add(none);<br> add(horizontal);<br> add(angled);<br> }<br> class RadioButtonListener implements ActionListener {<br> public void actionPerformed(ActionEvent e) {<br> JRadioButton rb = (JRadioButton)e.getSource();</p> <p> if(rb == none) {<br> tree.putClientProperty(<br> "JTree.lineStyle", "None");<br> }<br> if(rb == horizontal) {<br> tree.putClientProperty(<br> "JTree.lineStyle", "Horizontal");<br> }<br> if(rb == angled) {<br> tree.putClientProperty(<br> "JTree.lineStyle", "Angled");<br> }<br> tree.repaint();<br> }<br> }<br> class CheckBoxListener implements ActionListener {<br> public void actionPerformed(ActionEvent e) {<br> JCheckBox cb = (JCheckBox)e.getSource();</p> <p> if(cb == palette) {<br> palette.putClientProperty(<br> "JInternalFrame.isPalette", <br> new Boolean(cb.isSelected()));</p> <p> jif.revalidate();<br> }<br> else if(cb == filled) {<br> slider.putClientProperty(<br> "JSlider.isFilled", <br> new Boolean(cb.isSelected()));</p> <p> slider.repaint();<br> }<br> else if(cb == rollover) {<br> toolbar.putClientProperty(<br> "JToolBar.isRollover", <br> new Boolean(cb.isSelected()));</p> <p> toolbar.repaint();<br> }<br> else if(cb == freeStanding) {<br> scrollbar.putClientProperty(<br> "JScrollBar.isFreeStanding", <br> new Boolean(cb.isSelected()));</p> <p> scrollbar.repaint();<br> }<br> }<br> }<br> }<br> }</p> <hr size="1" noshade> <p> 7.2.1 客户属性</p> <p> </p> <p> 7.2.2 主题</p> <p align="center"><b>例7-6 一个简单的定制主题</b></p> <hr noshade size="1"> import java.awt.*;<br> import javax.swing.*;<br> import javax.swing.plaf.*;<br> import javax.swing.plaf.metal.*;<br> import javax.swing.plaf.*; <p>public class Test extends JApplet {<br> public void init() {<br> Container contentPane = getContentPane();</p> <p> contentPane.setLayout(new FlowLayout());</p> <p> setMetalTheme(new ExperimentalTheme());</p> <p> contentPane.add(new JButton("button"));<br> contentPane.add(new JCheckBox("check me"));<br> }<br> private void setMetalTheme(MetalTheme theme) {<br> MetalLookAndFeel.setCurrentTheme(new ExperimentalTheme());</p> <p> // Metal Look and Feel must be (re)loaded for the<br> // new theme to take effect ...</p> <p> try {<br> UIManager.setLookAndFeel(<br> "javax.swing.plaf.metal.MetalLookAndFeel");<br> }<br> catch(IllegalAccessException e1) {}<br> catch(UnsupportedLookAndFeelException e2) {}<br> catch(InstantiationException e3) {}<br> catch(ClassNotFoundException e4) {}<br> }<br> }<br> class ExperimentalTheme extends DefaultMetalTheme {<br> public FontUIResource getControlTextFont() { <br> return new FontUIResource("SanSerif", <br> Font.BOLD + Font.ITALIC, 24);<br> }<br> }</p> <hr size="1" noshade> <p> </p> <p align="center"><b>例7-7 安装一个附加界面样式</b></p> <hr noshade size="1"> import java.awt.*;<br> import javax.swing.*; <p>public class Test extends JApplet {<br> public void init() {<br> UIManager.addAuxiliaryLookAndFeel( <br> new ExampleAuxiliaryLookAndFeel());</p> <p> Container contentPane = getContentPane();<br> JButton button = new JButton("button");</p> <p> contentPane.setLayout(new FlowLayout());<br> contentPane.add(button);<br> }<br> }</p> <hr size="1" noshade> <p align="center"><b>例7-8 附加界面样式的例子</b></p> <hr noshade size="1"> import java.awt.*;<br> import javax.swing.*; <p>public class ExampleAuxiliaryLookAndFeel extends LookAndFeel {<br> public String getDescription(){<br> return "example auxiliary look and feel";<br> }<br> public String getID() {<br> return "example";<br> }<br> public String getName() {<br> return "example auxiliary"; <br> }<br> public boolean isNativeLookAndFeel() {<br> return false;<br> }<br> public boolean isSupportedLookAndFeel() {<br> return true;<br> }<br> public UIDefaults getDefaults() {<br> UIDefaults table = new UIDefaults();</p> <p> Object[] uiDefaults = {<br> "ButtonUI", "AuxiliaryButtonUI"<br> };</p> <p> table.putDefaults(uiDefaults);<br> return table;<br> }<br> }</p> <hr size="1" noshade> <p align="center"><b>例7-9 一个附加UI</b></p> <hr noshade size="1"> import java.awt.*;<br> import java.awt.event.*;<br> import javax.accessibility.*;<br> import javax.swing.*;<br> import javax.swing.plaf.*; <p>public class AuxiliaryButtonUI extends ComponentUI {<br> private static ComponentUI cui = new AuxiliaryButtonUI();<br> private static AuxiliaryButtonMouseListener ml = <br> new AuxiliaryButtonMouseListener();</p> <p> // must be implemented<br> public static ComponentUI createUI(JComponent c) {<br> return cui;<br> }<br> public void installUI(JComponent c) {<br> c.addMouseListener(ml);<br> }<br> public void uninstallUI(JComponent c) {<br> c.removeMouseListener(ml);<br> }<br> public void update(Graphics g, JComponent c) {<br> // don't want ComponentUI default behavior, which is<br> // to clear the background<br> }<br> }<br> class AuxiliaryButtonMouseListener extends MouseAdapter {<br> public void mouseEntered(MouseEvent e) {<br> JComponent c = (JComponent)e.getSource();<br> AccessibleContext ac = c.getAccessibleContext();<br> String role = ac.getAccessibleRole().toString();<br> String name = ac.getAccessibleName();</p> <p> System.out.println("mouse entered component of type " +<br> role + " named " + name);<br> }<br> }</p> <hr size="1" noshade> <p> </p> <p> </p> <p> 7.3 附加UI</p> <p> </p> <p> 7.4 本章回顾</p> <p> </p> <p>[<a href="index.html" target="_self">目录</a>][<a href="s06.htm">上一页</a>][<a href="s08.htm">下一页</a>](飒龙收藏/2002.5.18) </p> </td> </tr> </tbody> </table> </td> </tr></tbody></table><script language="javascript">bottomprint()</script></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -