- 浏览: 16027 次
- 性别:
最新评论
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 544假设读者有一定数据结 ... -
java 通信 看文章的时候将我是理科生,看逻辑的时候我是文科生
2014-09-02 23:29 410最近学习了 java 通信 ... -
链表你到底是干啥的?
2014-07-28 10:04 565链表这个逗逼 我暂时还没能完整的了解它 , 只是简单的搞了个 ... -
数组队列你大爷的
2014-07-28 09:37 647刚听老师讲数 ... -
仔细看看框架JFrame是什么
2014-07-21 22:32 1917首先介绍一个新单词 , 妈蛋 , 不要从字面了解意思 , 这是 ... -
论setVisible 的重要性
2014-07-21 22:20 0基于我是新手 接触java时间不长 犯了很多有意思的错误 ... -
初识数组
2014-07-20 09:49 432数组的 1.新建规则是 一维数组: 数组类型[]+数组名 ... -
java继承与接口
2014-07-14 08:58 530java继承与接口 ... -
java类与对象
2014-07-14 08:05 326类与对象 我没接触过其他语言 没办法与其他语言对比,ja ... -
Java class and object
2014-07-07 13:20 0This is my first block , it pre ...
相关推荐
在本文中,我们将深入探讨“非常漂亮的一款窗体控件”,这款控件由雪原在线(www.play78.com)精心收集并整理,旨在为开发者提供美观且易用的UI元素。 首先,我们来理解窗体(Form)的概念。窗体是用户界面的基本...
- 数据绑定是将窗体控件与数据库字段关联的过程。例如,窗体上的文本框可以绑定到数据库中的员工姓名字段,这样当用户在文本框中输入时,数据会自动更新到相应字段。 - "工资管理系统"可以将窗体的控件与工资表的...
本文将详细介绍如何在JSP(JavaServer Pages)环境中实现模式窗体的功能,并通过具体的JavaScript代码示例来解释其实现过程。 #### 模式窗体的基本概念 模式窗体是一种遮罩层与子窗体组合而成的设计模式,常用于...
这个压缩包中的核心内容是“注册窗体”,这通常是指一个应用程序的用户注册界面,它涉及到用户输入信息的收集、验证以及数据存储等关键功能。在这里,我们将深入探讨Java项目开发中的相关知识点,尤其是与用户注册...
12. **关键词**:文章关键词包括控件、窗体和域,这些都是VB中构建用户界面和与数据库交互的基本元素。 13. **系统优势**:相比传统的人工管理方式,计算机管理系统具有检索快、查找方便、可靠性高、存储量大、保密...
JAVA是一门"简单的、面向对象的、强类型的、编译型的、结构无关的、多线程(multi-threaded)的、垃圾自动收集的、健壮的、安全的、可扩展的语言。本系统使用的是美国微软公司的MICROSOFT VISUAL J++6.0。 MICROSOFT...
JAVA是INTERNET开发的一个强大的工具,它是一个C++的简化版本。JAVA是一门"简单的、面向对象的、强类型的、编译型的、结构无关的、多线程...通过添加WFC数据控件在Forms Designer中的窗体上,可以快速配置数据。
在Java中,GUI主要由窗体(Window)和各种图形化组件(Component)组成,例如菜单、按钮、文本框等。AWT提供了一系列的类和接口来支持这些组件的创建和管理。 知识点二:布局管理器 布局管理器是AWT中的重要概念,...
13. 窗体控件:窗体控件是用户界面元素,如标签、文本框、组合框等,表不是窗体控件,而是数据库中的数据结构。 14. CPU技术指标:CPU的主要技术性能指标包括字长、主频、运算速度等。 15. Java流:Java中的`...
窗体控件通常包括标签、文本框、组合框等,这些控件用于展示数据或收集用户输入。 ### 9. Word格式设置 - **粗体与斜体**:在Word中,“I”字母按钮的作用是使选定对象变为斜体,而不是粗体。要设置为粗体,应该...
然后,在run()方法中,我们设置了窗体的标题,注册了当前类到一个向量里,防止当前Frame对象被垃圾收集器收集,并添加到窗口管理器中。 在run()方法中,我们还使用了GridBagLayout布局管理器对控件进行部署。我们...
9. **窗体控件**:窗体控件是用户界面元素,如标签(Label)、文本框(TextBox)和组合框(ComboBox),而表(Table)通常指的是数据库中的表格,不是窗体控件(选项A)。 10. **E-mail特性**:E-mail可以包含文本...
18. **窗体控件**:表不是窗体控件,而是数据库中的一个对象,用于存储数据。 19. **类、对象和事件**:对象是类的实例,类定义了对象的结构和行为;事件是用户或系统触发的动作,可以触发对象的特定响应。 20. **...
JAVA是INTERNET开发的一个强大的工具,它是一个C++的简化版本。JAVA是一门"简单的、面向对象的、强类型的、编译型的、结构无关的、多线程(multi-...通过添加WFC数据控件在Forms Designer中的窗体上,可以快速配置数据
1. **控件使用**:VB提供了多种内置控件,如Form(窗体)、Button(按钮)、Label(标签)、TextBox(文本框)、ListBox(列表框)、ComboBox(组合框)等,开发者可以根据需求选择合适的控件,并通过属性设置调整其...
17. **窗体控件**:在窗体设计中,表(Table)不被视为一个控件,标签(Label)、文本框(TextBox)和组合框(ComboBox)都是常见的控件。 18. **插入声音**:在PowerPoint中,可以通过“插入”菜单的“影片和声音...
7. 引用窗体控件的值,宏表达式应该为Forms!窗体名!控件名,这涉及到VBA(Visual Basic for Applications)编程。 8. 创建数据库的第二种方法是使用B.数据库向导,这可以帮助用户更方便地构建数据库结构。 9. 深度...
### Java TreeView 多选与获取值详解 #### 背景介绍 在Windows Forms (WinForm) 应用程序中,使用`TreeView`控件展示分层数据结构是一种非常常见的做法。例如,在一个企业应用中,我们可能需要展示一个包含多级部门...