- 浏览: 15001 次
- 性别:
最新评论
java 的 控件收集
1.图片查看器 ImageViewer
2.复选框 MulitCombobox
3.MulitPopup
4.Swing 控件集合
5.JOptionPane 提示框大全
6.JToolBar java工具条
图片查看器 ImageViewer
3. 复选框 MulitCombobox
3.MulitPopup
4.SwingComponent 控件集合
5.JOptionPane java 提示框
6.JToolBar java工具条
1.图片查看器 ImageViewer
2.复选框 MulitCombobox
3.MulitPopup
4.Swing 控件集合
5.JOptionPane 提示框大全
6.JToolBar java工具条
图片查看器 ImageViewer
import java.awt.Dimension; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileView; public class ImageViewer { final int PREVIEW_SIZE = 100; JFrame jf = new JFrame("简单图片查看器"); JMenuBar menuBar = new JMenuBar(); //该label用于显示图片 JLabel label = new JLabel(); //以当前路径创建文件选择器 JFileChooser chooser = new JFileChooser("."); JLabel accessory = new JLabel(); ExtensionFileFilter filter = new ExtensionFileFilter(); public void init() { //-------------------下面开始初始化JFileChooser的相关属性----------------- // 创建一个FileFilter filter.addExtension("jpg"); filter.addExtension("jpeg"); filter.addExtension("gif"); filter.addExtension("png"); filter.setDescription("图片文件(*.jpg,*.jpeg,*.gif,*.png)"); chooser.addChoosableFileFilter(filter); //禁止“文件类型”下拉列表中显示“所有文件”选项。 chooser.setAcceptAllFileFilterUsed(false); //为文件选择器指定自定义的FileView对象 chooser.setFileView(new FileIconView(filter)); //为文件选择器指定一个预览图片的附件组件 chooser.setAccessory(accessory); //设置预览图片组件的大小和边框 accessory.setPreferredSize(new Dimension(PREVIEW_SIZE, PREVIEW_SIZE)); accessory.setBorder(BorderFactory.createEtchedBorder()); //用于检测被选择文件的改变事件 chooser.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { //JFileChooser的被选文件已经发生了改变 if (event.getPropertyName() == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) { //获取用户选择的新文件 File f = (File) event.getNewValue(); if (f == null) { accessory.setIcon(null); return; } //将所文件读入ImageIcon对象中 ImageIcon icon = new ImageIcon(f.getPath()); //如果图像太大,则缩小它 if(icon.getIconWidth() > PREVIEW_SIZE) { icon = new ImageIcon(icon.getImage() .getScaledInstance(PREVIEW_SIZE, -1, Image.SCALE_DEFAULT)); } //改变accessory Label的图标 accessory.setIcon(icon); } } }); //----------下面代码开始为该窗口安装菜单------------ JMenu menu = new JMenu("文件"); menuBar.add(menu); JMenuItem openItem = new JMenuItem("打开"); menu.add(openItem); //单击openItem菜单项显示“打开文件”的对话框 openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { //设置文件对话框的当前路径 //chooser.setCurrentDirectory(new File(".")); //显示文件对话框 int result = chooser.showDialog(jf , "打开图片文件"); //如果用户选择了APPROVE(赞同)按钮,即打开,保存及其等效按钮 if(result == JFileChooser.APPROVE_OPTION) { String name = chooser.getSelectedFile().getPath(); //显示指定图片 label.setIcon(new ImageIcon(name)); } } }); JMenuItem exitItem = new JMenuItem("退出"); menu.add(exitItem); exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); jf.setJMenuBar(menuBar); //添加用于显示图片的JLabel组件。 jf.add(new JScrollPane(label)); jf.setSize(500, 400); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } public static void main(String[] args) { new ImageViewer().init(); } } //创建FileFilter的子类,用以实现文件过滤功能 class ExtensionFileFilter extends FileFilter { private String description = ""; private ArrayList<String> extensions = new ArrayList<String>(); //自定义方法,用于添加文件扩展名 public void addExtension(String extension) { if (!extension.startsWith(".")) { extension = "." + extension; extensions.add(extension.toLowerCase()); } } //用于设置该文件过滤器的描述文本 public void setDescription(String aDescription) { description = aDescription; } //继承FileFilter类必须实现的抽象方法,返回该文件过滤器的描述文本 public String getDescription() { return description; } //继承FileFilter类必须实现的抽象方法,判断该文件过滤器是否接受该文件 public boolean accept(File f) { //如果该文件是路径,接受该文件 if (f.isDirectory()) return true; //将文件名转为小写(全部转为小写后比较,用于忽略文件名大小写) String name = f.getName().toLowerCase(); //遍历所有可接受的扩展名,如果扩展名相同,该文件就可接受。 for (String extension : extensions) { if (name.endsWith(extension)) { return true; } } return false; } } //自定义一个FileView类,用于为指定类型的指定图标 class FileIconView extends FileView { private FileFilter filter; public FileIconView(FileFilter filter) { this.filter = filter; } //如果文件不是目录,并且不是 public Icon getIcon(File f) { if (!f.isDirectory() && filter.accept(f)) { return new ImageIcon("ico/pict.png"); } else if (f.isDirectory()) { //获取所有根路径 File[] fList = File.listRoots(); for (File tmp : fList) { //如果该路径是根路径 if (tmp.equals(f)) { return new ImageIcon("ico/dsk.png"); } } return new ImageIcon("ico/folder.png"); } //使用默认图标 else { return null; } } }
3. 复选框 MulitCombobox
import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Insets; import java.awt.LayoutManager; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.plaf.basic.BasicArrowButton; /** * hi , this is my first ui component. my ui component "hello world"!! * * @author bugu * */ public class MulitCombobox extends JComponent { private Object[] values; private Object[] defaultValues; private List<ActionListener> listeners = new ArrayList<ActionListener>(); private MulitPopup popup; private JTextField editor; protected JButton arrowButton; private String valueSperator; private static final String DEFAULT_VALUE_SPERATOR = " "; public MulitCombobox(Object[] value, Object[] defaultValue){ this(value,defaultValue,DEFAULT_VALUE_SPERATOR); } public MulitCombobox(Object[] value, Object[] defaultValue , String valueSperator) { values = value; defaultValues = defaultValue; this.valueSperator = valueSperator; initComponent(); } private void initComponent() { //暂时使用该布局,后续自己写个布局 this.setLayout(new FlowLayout()); popup =new MulitPopup(values,defaultValues); popup.addActionListener(new PopupAction()); editor = new JTextField(); editor.setBackground(Color.WHITE); editor.setEditable(false); editor.setBorder(null); editor.addMouseListener(new EditorHandler()); arrowButton = createArrowButton(); arrowButton.addMouseListener(new EditorHandler()); add(editor); add(arrowButton); setText() ; } public Object[] getSelectedValues() { return popup.getSelectedValues(); } public void addActionListener(ActionListener listener) { if (!listeners.contains(listener)) listeners.add(listener); } public void removeActionListener(ActionListener listener) { if (listeners.contains(listener)) listeners.remove(listener); } protected void fireActionPerformed(ActionEvent e) { for (ActionListener l : listeners) { l.actionPerformed(e); } } private class PopupAction implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals(MulitPopup.CANCEL_EVENT)){ }else if(e.getActionCommand().equals(MulitPopup.COMMIT_EVENT)){ defaultValues = popup.getSelectedValues(); setText(); //把事件继续传递出去 fireActionPerformed(e); } togglePopup(); } } private void togglePopup(){ if(popup.isVisible()){ popup.setVisible(false); }else{ popup.setDefaultValue(defaultValues); popup.show(this, 0, getHeight()); } } private void setText() { StringBuilder builder = new StringBuilder(); for(Object dv : defaultValues){ builder.append(dv); builder.append(valueSperator); } editor.setText(builder.substring(0, builder.length() > 0 ? builder.length() -1 : 0).toString()); } private class EditorHandler implements MouseListener{ @Override public void mouseClicked(MouseEvent e) { togglePopup(); } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } } public void paintComponent(Graphics g){ g.setColor(Color.white); g.fillRect(0,0,getWidth(),getHeight()); } /** * 摘自JDK * Creates an button which will be used as the control to show or hide * the popup portion of the combo box. * * @return a button which represents the popup control */ protected JButton createArrowButton() { JButton button = new BasicArrowButton(BasicArrowButton.SOUTH, UIManager.getColor("ComboBox.buttonBackground"), UIManager.getColor("ComboBox.buttonShadow"), UIManager.getColor("ComboBox.buttonDarkShadow"), UIManager.getColor("ComboBox.buttonHighlight")); button.setName("ComboBox.arrowButton"); return button; } private class MulitComboboxLayout implements LayoutManager{ @Override public void addLayoutComponent(String name, Component comp) { // TODO Auto-generated method stub } @Override public void removeLayoutComponent(Component comp) { // TODO Auto-generated method stub } @Override public Dimension preferredLayoutSize(Container parent) { return parent.getPreferredSize(); } @Override public Dimension minimumLayoutSize(Container parent) { return parent.getMinimumSize(); } @Override public void layoutContainer(Container parent) { int w=parent.getWidth(); int h=parent.getHeight(); Insets insets=parent.getInsets(); h=h-insets.top-insets.bottom; } } }
3.MulitPopup
import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JPopupMenu; /** * * @author bugu * */ public class MulitPopup extends JPopupMenu { private List<ActionListener> listeners = new ArrayList<ActionListener>(); private Object[] values; private Object[] defaultValues; private List<JCheckBox> checkBoxList = new ArrayList<JCheckBox>(); private JButton commitButton ; private JButton cancelButton; public static final String COMMIT_EVENT = "commit"; public static final String CANCEL_EVENT = "cancel"; public MulitPopup(Object[] value , Object[] defaultValue) { super(); values = value; defaultValues = defaultValue; initComponent(); } public void addActionListener(ActionListener listener) { if (!listeners.contains(listener)) listeners.add(listener); } public void removeActionListener(ActionListener listener) { if (listeners.contains(listener)) listeners.remove(listener); } private void initComponent() { JPanel checkboxPane = new JPanel(); JPanel buttonPane = new JPanel(); this.setLayout(new BorderLayout()); for(Object v : values){ JCheckBox temp = new JCheckBox(v.toString() , selected(v)); checkBoxList.add(temp); } checkboxPane.setLayout(new GridLayout(checkBoxList.size() , 1 ,3, 3)); for(JCheckBox box : checkBoxList){ checkboxPane.add(box); } commitButton = new JButton("ok"); commitButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { commit(); } }); cancelButton = new JButton("cancel"); cancelButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { cancel(); } }); buttonPane.add(commitButton); buttonPane.add(cancelButton); this.add(checkboxPane , BorderLayout.CENTER); this.add(buttonPane , BorderLayout.SOUTH); } private boolean selected(Object v) { for(Object dv : defaultValues){ if( dv .equals(v) ){ return true; } } return false; } protected void fireActionPerformed(ActionEvent e) { for (ActionListener l : listeners) { l.actionPerformed(e); } } public Object[] getSelectedValues(){ List<Object> selectedValues = new ArrayList<Object>(); for(int i = 0 ; i < checkBoxList.size() ; i++){ if(checkBoxList.get(i).isSelected()) selectedValues.add(values[i]); } return selectedValues.toArray(new Object[selectedValues.size()]); } public void setDefaultValue(Object[] defaultValue) { defaultValues = defaultValue; } public void commit(){ fireActionPerformed(new ActionEvent(this, 0, COMMIT_EVENT)); } public void cancel(){ fireActionPerformed(new ActionEvent(this, 0, CANCEL_EVENT)); } }
4.SwingComponent 控件集合
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import javax.swing.JRadioButtonMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class SwingComponent { JFrame f = new JFrame("测试"); //定义一个按钮,并为之指定图标 Icon okIcon = new ImageIcon("ico/ok.png"); JButton ok = new JButton("确认" , okIcon); //定义一个单选按钮,初始处于选中状态 JRadioButton male = new JRadioButton("男" , true); //定义一个单按钮,初始处于没有选中状态 JRadioButton female = new JRadioButton("女" , false); //定义一个ButtonGroup,用于将上面两个JRadioButton组合在一起 ButtonGroup bg = new ButtonGroup(); //定义一个复选框,初始处于没有选中状态。 JCheckBox married = new JCheckBox("是否已婚?" , false); String[] colors = new String[]{"红色" , "绿色" , "蓝色"}; //定义一个下拉选择框 JComboBox colorChooser = new JComboBox(colors); //定义一个列表选择框 JList colorList = new JList(colors); //定义一个8行、20列的多行文本域 JTextArea ta = new JTextArea(8, 20); //定义一个40列的单行文本域 JTextField name = new JTextField(40); JMenuBar mb = new JMenuBar(); JMenu file = new JMenu("文件"); JMenu edit = new JMenu("编辑"); //创建“新建”菜单项,并为之指定图标 Icon newIcon = new ImageIcon("ico/new.png"); JMenuItem newItem = new JMenuItem("新建" , newIcon); //创建“保存”菜单项,并为之指定图标 Icon saveIcon = new ImageIcon("ico/save.png"); JMenuItem saveItem = new JMenuItem("保存" , saveIcon); //创建“退出”菜单项,并为之指定图标 Icon exitIcon = new ImageIcon("ico/exit.png"); JMenuItem exitItem = new JMenuItem("退出" , exitIcon); JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("自动换行"); //创建“复制”菜单项,并为之指定图标 JMenuItem copyItem = new JMenuItem("复制" , new ImageIcon("ico/copy.png")); //创建“粘贴”菜单项,并为之指定图标 JMenuItem pasteItem = new JMenuItem("粘贴" , new ImageIcon("ico/paste.png")); JMenu format = new JMenu("格式"); JMenuItem commentItem = new JMenuItem("注释"); JMenuItem cancelItem = new JMenuItem("取消注释"); //定义一个右键菜单用于设置程序风格 JPopupMenu pop = new JPopupMenu(); //用于组合三个风格菜单项的ButtonGroup ButtonGroup flavorGroup = new ButtonGroup(); //创建三个单选框按钮,用于设定程序的外观风格 JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal风格" , true); JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows风格"); JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif风格"); public void init() { //创建一个装载了文本框、按钮的JPanel JPanel bottom = new JPanel(); bottom.add(name); bottom.add(ok); f.add(bottom , BorderLayout.SOUTH); //创建一个装载了下拉选择框、三个JCheckBox的JPanel JPanel checkPanel = new JPanel(); checkPanel.add(colorChooser); bg.add(male); bg.add(female); checkPanel.add(male); checkPanel.add(female); checkPanel.add(married); //创建一个垂直排列组件的Box,盛装多行文本域JPanel Box topLeft = Box.createVerticalBox(); //使用JScrollPane作为普通组件的JViewPort JScrollPane taJsp = new JScrollPane(ta); topLeft.add(taJsp); topLeft.add(checkPanel); //创建一个垂直排列组件的Box,盛装topLeft、colorList Box top = Box.createHorizontalBox(); top.add(topLeft); top.add(colorList); // 将top Box容器添加到窗口的中间 f.add(top); //-----------下面开始组合菜单、并为菜单添加事件监听器---------- //为newItem设置快捷键,设置快捷键时要使用大写字母 newItem.setAccelerator(KeyStroke.getKeyStroke('N' , InputEvent.CTRL_MASK)); newItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ta.append("用户单击了“新建”菜单/n"); } }); //为file菜单添加菜单项 file.add(newItem); file.add(saveItem); file.add(exitItem); //为edit菜单添加菜单项 edit.add(autoWrap); //使用addSeparator方法来添加菜单分隔线 edit.addSeparator(); edit.add(copyItem); edit.add(pasteItem); commentItem.setToolTipText("将程序代码注释起来!"); //为format菜单添加菜单项 format.add(commentItem); format.add(cancelItem); //使用添加new JMenuItem("-")的方式不能添加菜单分隔符 edit.add(new JMenuItem("-")); //将format菜单组合到edit菜单中,从而形成二级菜单 edit.add(format); //将file、edit菜单添加到mb菜单条中 mb.add(file); mb.add(edit); //为f窗口设置菜单条 f.setJMenuBar(mb); //-----------下面开始组合右键菜单、并安装右键菜单---------- flavorGroup.add(metalItem); flavorGroup.add(windowsItem); flavorGroup.add(motifItem); pop.add(metalItem); pop.add(windowsItem); pop.add(motifItem); //为三个菜单创建事件监听器 ActionListener flavorListener = new ActionListener() { public void actionPerformed(ActionEvent e) { try { if (e.getActionCommand().equals("Metal风格")) { changeFlavor(1); } else if (e.getActionCommand().equals("Windows风格")) { changeFlavor(2); } else if (e.getActionCommand().equals("Motif风格")) { changeFlavor(3); } } catch (Exception ee) { ee.printStackTrace(); } } }; //为三个菜单添加事件监听器 metalItem.addActionListener(flavorListener); windowsItem.addActionListener(flavorListener); motifItem.addActionListener(flavorListener); //调用该方法即可设置右键菜单,无需使用事件机制 ta.setComponentPopupMenu(pop); //设置关闭窗口时,退出程序 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.pack(); f.setVisible(true); } //定义一个方法,用于改变界面风格 private void changeFlavor(int flavor)throws Exception { switch (flavor) { //设置Metal风格 case 1: UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); break; //设置Windows风格 case 2: UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); break; //设置Motif风格 case 3: UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); break; } //更新f窗口内顶级容器以及内部所有组件的UI SwingUtilities.updateComponentTreeUI(f.getContentPane()); //更新mb菜单条以及内部所有组件的UI SwingUtilities.updateComponentTreeUI(mb); //更新pop右键菜单以及内部所有组件的UI SwingUtilities.updateComponentTreeUI(pop); } public static void main(String[] args) { //设置Swing窗口使用Java风格 JFrame.setDefaultLookAndFeelDecorated(true); new SwingComponent().init(); } }
5.JOptionPane java 提示框
import java.awt.Component; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.border.EtchedBorder; import javax.swing.border.TitledBorder; public class TestJOptionPane { JFrame jf = new JFrame("测试JOptionPane"); //分别定义6个面板用于定义对话框的几种选项 private ButtonPanel messagePanel; private ButtonPanel messageTypePanel; private ButtonPanel msgPanel; private ButtonPanel confirmPanel; private ButtonPanel optionsPanel; private ButtonPanel inputPanel; private String messageString = "消息区内容"; private Icon messageIcon = new ImageIcon("ico/heart.png"); private Object messageObject = new Date(); private Component messageComponent = new JButton("组件消息"); private JButton msgBn = new JButton("消息对话框"); private JButton confrimBn = new JButton("确认对话框"); private JButton inputBn = new JButton("输入对话框"); private JButton optionBn = new JButton("选项对话框"); public void init() { JPanel top = new JPanel(); // top.setBorder(new TitledBorder(new EtchedBorder(), "对话框的通用选项" , // TitledBorder.CENTER ,TitledBorder.TOP )); top.setLayout(new GridLayout(1 , 2)); //消息类型Panel,该Panel中的选项决定对话框的图标 messageTypePanel = new ButtonPanel("选择消息的类型", new String[]{"ERROR_MESSAGE", "INFORMATION_MESSAGE", "WARNING_MESSAGE", "QUESTION_MESSAGE", "PLAIN_MESSAGE" }); //消息内容类型的Panel,该Panel中的选项决定对话框的消息区的内容 messagePanel = new ButtonPanel("选择消息内容的类型", new String[]{"字符串消息", "图标消息", "组件消息", "普通对象消息" , "Object[]消息"}); top.add(messageTypePanel); top.add(messagePanel); JPanel bottom = new JPanel(); bottom.setBorder(new TitledBorder(new EtchedBorder(), "弹出不同的对话框" , TitledBorder.CENTER ,TitledBorder.TOP)); bottom.setLayout(new GridLayout(1 , 4)); //创建用于弹出消息对话框的Panel msgPanel = new ButtonPanel("消息对话框", null); msgBn.addActionListener(new ShowAction()); msgPanel.add(msgBn); //创建用于弹出确认对话框的Panel confirmPanel = new ButtonPanel("确认对话框", new String[]{"DEFAULT_OPTION", "YES_NO_OPTION", "YES_NO_CANCEL_OPTION", "OK_CANCEL_OPTION"}); confrimBn.addActionListener(new ShowAction()); confirmPanel.add(confrimBn); //创建用于弹出输入对话框的Panel inputPanel = new ButtonPanel("输入对话框", new String[]{"单行文本框","下拉列表选择框"}); inputBn.addActionListener(new ShowAction()); inputPanel.add(inputBn); //创建用于弹出选项对话框的Panel optionsPanel = new ButtonPanel("选项对话框", new String[]{"字符串选项", "图标选项", "对象选项"}); optionBn.addActionListener(new ShowAction()); optionsPanel.add(optionBn); bottom.add(msgPanel); bottom.add(confirmPanel); bottom.add(inputPanel); bottom.add(optionsPanel); Box box = new Box(BoxLayout.Y_AXIS); box.add(top); box.add(bottom); jf.add(box); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.pack(); jf.setVisible(true); } //根据用户选择返回选项类型 private int getOptionType() { if (confirmPanel.getSelection().equals("DEFAULT_OPTION")) return JOptionPane.DEFAULT_OPTION; else if (confirmPanel.getSelection().equals("YES_NO_OPTION")) return JOptionPane.YES_NO_OPTION; else if (confirmPanel.getSelection().equals("YES_NO_CANCEL_OPTION")) return JOptionPane.YES_NO_CANCEL_OPTION; else return JOptionPane.OK_CANCEL_OPTION; } //根据用户选择返回消息 private Object getMessage() { if (messagePanel.getSelection().equals("字符串消息")) return messageString; else if (messagePanel.getSelection().equals("图标消息")) return messageIcon; else if (messagePanel.getSelection().equals("组件消息")) return messageComponent; else if(messagePanel.getSelection().equals("普通对象消息")) return messageObject; else return new Object[]{messageString , messageIcon , messageObject , messageComponent}; } //根据用户选择返回消息类型(决定图标区的图标) private int getDialogType() { if (messageTypePanel.getSelection().equals("ERROR_MESSAGE")) return JOptionPane.ERROR_MESSAGE; else if (messageTypePanel.getSelection().equals("INFORMATION_MESSAGE")) return JOptionPane.INFORMATION_MESSAGE; else if (messageTypePanel.getSelection().equals("WARNING_MESSAGE")) return JOptionPane.WARNING_MESSAGE; else if(messageTypePanel.getSelection().equals("QUESTION_MESSAGE")) return JOptionPane.QUESTION_MESSAGE; else return JOptionPane.PLAIN_MESSAGE; } private Object[] getOptions() { if (optionsPanel.getSelection().equals("字符串选项")) return new String[]{"a" , "b" , "c" , "d"}; else if (optionsPanel.getSelection().equals("图标选项")) return new Icon[]{new ImageIcon("ico/1.gif") , new ImageIcon("ico/2.gif"), new ImageIcon("ico/3.gif"),new ImageIcon("ico/4.gif")}; else return new Object[]{new Date() ,new Date() , new Date()}; } //为各按钮定义事件监听器 private class ShowAction implements ActionListener { public void actionPerformed(ActionEvent event) { if (event.getActionCommand().equals("确认对话框")) { JOptionPane.showConfirmDialog(jf , getMessage(),"确认对话框", getOptionType(), getDialogType()); } else if (event.getActionCommand().equals("输入对话框")) { if (inputPanel.getSelection().equals("单行文本框")) { JOptionPane.showInputDialog(jf, getMessage(), "输入对话框", getDialogType()); } else { JOptionPane.showInputDialog(jf, getMessage(), "输入对话框", getDialogType(), null, new String[] {"轻量级J2EE企业应用实战", "Struts2权威指南"}, "Struts2权威指南"); } } else if (event.getActionCommand().equals("消息对话框")) { JOptionPane.showMessageDialog(jf,getMessage(),"消息对话框",getDialogType()); } else if (event.getActionCommand().equals("选项对话框")) { JOptionPane.showOptionDialog(jf , getMessage() , "选项对话框", getOptionType(), getDialogType(), null, getOptions(), "a"); } } } public static void main(String[] args) { new TestJOptionPane().init(); } } //定义一个JPanel类扩展类,该类的对象包含多个纵向排列的JRadioButton控件 //且Panel扩展类可以指定一个字符串作为TitledBorder class ButtonPanel extends JPanel { private ButtonGroup group; public ButtonPanel(String title, String[] options) { setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), title)); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); group = new ButtonGroup(); for (int i = 0; options!= null && i < options.length; i++) { JRadioButton b = new JRadioButton(options[i]); b.setActionCommand(options[i]); add(b); group.add(b); b.setSelected(i == 0); } } //定义一个方法,用于返回用户选择的选项 public String getSelection() { return group.getSelection().getActionCommand(); } }
6.JToolBar java工具条
import java.awt.BorderLayout; import java.awt.Insets; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JToolBar; public class TestJToolBar { JFrame jf = new JFrame("测试工具条"); JTextArea jta = new JTextArea(6, 35); JToolBar jtb = new JToolBar(); JMenuBar jmb = new JMenuBar(); JMenu edit = new JMenu("编辑"); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //创建"粘贴"Action,该Action用于创建菜单项、工具按钮和普通按钮 Action pasteAction = new AbstractAction("粘贴", new ImageIcon("ico/paste.png")) { public void actionPerformed(ActionEvent e) { //如果剪贴板中包含stringFlavor内容 if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) { try { //取出剪贴板中stringFlavor内容 String content = (String)clipboard.getData(DataFlavor.stringFlavor); //将选中内容替换成剪贴板中的内容 jta.replaceRange(content , jta.getSelectionStart() , jta.getSelectionEnd()); } catch (Exception ee) { ee.printStackTrace(); } } } }; //创建"复制"Action Action copyAction = new AbstractAction("复制", new ImageIcon("ico/copy.png")) { public void actionPerformed(ActionEvent e) { StringSelection contents = new StringSelection(jta.getSelectedText()); //将StringSelection对象放入剪贴板 clipboard.setContents(contents, null); //如果剪贴板中包含stringFlavor内容 if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) { //将pasteAction激活 pasteAction.setEnabled(true); } } }; public void init() { //pasteAction默认处于不激活状态 pasteAction.setEnabled(false); jf.add(new JScrollPane(jta)); //以Action创建按钮,并将该按钮添加到Panel中 JButton copyBn = new JButton(copyAction); JButton pasteBn = new JButton(pasteAction); JPanel jp = new JPanel(); jp.add(copyBn); jp.add(pasteBn); jf.add(jp , BorderLayout.SOUTH); //向工具条中添加Action对象,该对象将会转换成工具按钮 jtb.add(copyAction); jtb.addSeparator(); jtb.add(pasteAction); //向菜单中添加Action对象,该对象将会转换成菜单项 edit.add(copyAction); edit.add(pasteAction); //将edit菜单添加到菜单条中 jmb.add(edit); jf.setJMenuBar(jmb); //设置工具条和工具按钮之间的距离 jtb.setMargin(new Insets(20 ,10 , 5 , 30)); //向窗口中添加工具条 jf.add(jtb , BorderLayout.NORTH); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.pack(); jf.setVisible(true); } public static void main(String[] args) { new TestJToolBar().init(); } }
发表评论
-
servlet
2015-07-11 14:33 0上手servlet小记,一路摸爬滚更打。 16:00,有念 ... -
servlet入门
2015-06-23 16:58 46上手servlet小记,一路摸爬滚更打。 16:00,有 ... -
java数据结构之链表
2014-11-20 11:25 508假设读者有一定数据结 ... -
java 通信 看文章的时候将我是理科生,看逻辑的时候我是文科生
2014-09-02 23:29 375最近学习了 java 通信 ... -
链表你到底是干啥的?
2014-07-28 10:04 527链表这个逗逼 我暂时还没能完整的了解它 , 只是简单的搞了个 ... -
数组队列你大爷的
2014-07-28 09:37 607刚听老师讲数 ... -
仔细看看框架JFrame是什么
2014-07-21 22:32 1872首先介绍一个新单词 , 妈蛋 , 不要从字面了解意思 , 这是 ... -
论setVisible 的重要性
2014-07-21 22:20 0基于我是新手 接触java时间不长 犯了很多有意思的错误 ... -
初识数组
2014-07-20 09:49 406数组的 1.新建规则是 一维数组: 数组类型[]+数组名 ... -
java继承与接口
2014-07-14 08:58 500java继承与接口 ... -
java类与对象
2014-07-14 08:05 300类与对象 我没接触过其他语言 没办法与其他语言对比,ja ... -
Java class and object
2014-07-07 13:20 0This is my first block , it pre ...
相关推荐
[DateChooser.java] Java 日期选择控件(主体类) [public] [TablePanel.java] 日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet....
笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...
JAVA是INTERNET开发的一个强大的工具,它是一个C++的简化版本。JAVA是一门"简单的、面向对象的、强类型的、编译型的、结构无关的、多线程...通过添加WFC数据控件在Forms Designer中的窗体上,可以快速配置数据。
JAVA是一门"简单的、面向对象的、强类型的、编译型的、结构无关的、多线程(multi-threaded)的、垃圾自动收集的、健壮的、安全的、可扩展的语言。本系统使用的是美国微软公司的MICROSOFT VISUAL J++6.0。 MICROSOFT...
JAVA是INTERNET开发的一个强大的工具,它是一个C++的简化版本。JAVA是一门"简单的、面向对象的、强类型的、编译型的、结构无关的、多线程(multi-...通过添加WFC数据控件在Forms Designer中的窗体上,可以快速配置数据
ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0使用Web Part创建应用程序之二(共二) 体验 .net2.0 的优雅(2) -- ASP.net 主题和皮肤 NET2.0系列介绍(一).NET...
实例95 Java与C#混合编程的应用 实例96 C#与C++混合编程的应用 实例97 C#与VB混合编程的应用 实例98 C#组件与C#客户程序编程的应用 实例99 C#与XML联合应用XMLHelper 实例100 在C#中部署应用程序 附录 WinCV ...
第1章 初识Java 3 1.1 Java简介 3 1.1.1 Java的不同平台 3 1.1.2 Java发展的历程 3 1.1.3 Java的特点 4 1.2 安装开发工具包 5 1.2.1 下载JDK 5 1.2.2 安装JDK 6 1.2.3 安装后Java目录的解读 7 1.3...
实例90 在“新建”中添加自己的文件类型 实例91 显示Exchange软件的客户名称 实例92 读取Windows注册表信息 实例93 自定义AboutBox组件 实例94 自定义控件及应用 实例95 Java与C#混合编程的...
实例90 在“新建”中添加自己的文件类型 实例91 显示Exchange软件的客户名称 实例92 读取Windows注册表信息 实例93 自定义AboutBox组件 实例94 自定义控件及应用 实例95 Java与C#混合编程的...
22.2 在窗体上添加控件 418 22.2.1 使用wpf控件 418 22.2.2 动态更改属性 425 22.3 处理wpf窗体中的事件 429 第22章快速参考 434 第23章 收集用户输入 437 23.1 菜单设计原则和样式 437 23.2 菜单和菜单事件 ...
Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥) 20.什么是Code-Behind技术? 答:代码后植。 21.在.net中,配件的意思是? 答:程序集。(中间语言,源数据,资源,装配清单) 22.常用的调用...
<<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 ... 比尔....这一天 微软公司正式推出了其下一代...