JAVA中“选项卡”功能是怎样实现的?
就是像在桌面上右键菜单中点“属性”时弹出来的那种界面,
有“主题”、“桌面”、“屏保”之类的那种选项卡,
可以在一个选项卡中点“应用”来保存结果,也可以最后一起点“确定”来保存。
这一系列的功能是怎样实现的?
如果没有详细的实现过程,就帮忙把涉及到的方法给出来就可以。
多谢了!
------解决方案--------------------
呵呵,给你写了一个以假乱真的,自己完善一下吧。供参考:
- Java code
import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class TabbedDialog extends JDialog implements ActionListener { private Map<String, JPanel> panels; private MainPane mainPane; private JButton ok = new JButton("OK"); private JButton cancel = new JButton("Cancel"); private JButton apply = new JButton("Apply"); private class MainPane extends JPanel { JTabbedPane tabs; MainPane() { setLayout(new BorderLayout(6, 6)); tabs = new JTabbedPane(); add(BorderLayout.CENTER, tabs); add(BorderLayout.SOUTH, new Buttons()); } public Component addTab(String title, Component component) { return tabs.add(title, component); } public Insets getInsets() { return new Insets(6, 6, 6, 6); } } private class General extends JPanel { public void paint(Graphics g) { g.drawString("System:", 120, 50); g.drawString("Microsoft Windows XP Professional", 160, 62); } //自己完成... } private class ComputerName extends JPanel { //自己完成... } private class Hardware extends JPanel { //自己完成... } private class Advanced extends JPanel { //自己完成... } private class SystemRestore extends JPanel { //自己完成... } private class AutomaticUpdates extends JPanel { //自己完成... } private class Remote extends JPanel { //自己完成... } private class Buttons extends JPanel { Buttons() { setLayout(new FlowLayout(FlowLayout.RIGHT, 6, 0)); add(ok); add(cancel); add(apply); } } public void actionPerformed(ActionEvent e) { if (!e.getActionCommand().equals("Cancel")) save(); if (!e.getActionCommand().equals("Apply")) exit(); } private void exit() { System.exit(0); } private void save() { //自己完成... JOptionPane.showMessageDialog(this, "Settings saved"); } public TabbedDialog() { init(); setTitle("System Properties"); setSize(420, 480); mainPane = new MainPane(); setContentPane(mainPane); setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { exit(); } }); ok.addActionListener(this); cancel.addActionListener(this); apply.addActionListener(this); installTabs(); } private void init() { panels = new LinkedHashMap<String, JPanel>(); panels.put("General", new General()); panels.put("Computer Name", new ComputerName()); panels.put("Hardware", new Hardware()); panels.put("Advanced", new Advanced()); panels.put("System Restore", new SystemRestore()); panels.put("Automatic Updates", new AutomaticUpdates()); panels.put("Remote", new Remote()); } private void installTabs() { for (String s : panels.keySet()) mainPane.addTab(s, panels.get(s)); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { } new TabbedDialog(); }}