📄 svgpropertiesfontchooserwidget.java
字号:
/* * Created on 19 janv. 2005 * ============================================= GNU LESSER GENERAL PUBLIC LICENSE Version 2.1 =============================================GLIPS Graffiti Editor, a SVG EditorCopyright (C) 2004 Jordi SUC, Philippe Gil, SARL ITRISThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAContact : jordi.suc@itris.fr; philippe.gil@itris.fr ============================================= */package fr.itris.glips.svgeditor.properties;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import fr.itris.glips.svgeditor.*;import fr.itris.glips.svgeditor.canvas.*;/** * @author Jordi SUC */public class SVGPropertiesFontChooserWidget extends SVGPropertiesWidget{ /** * the constructor of the class * @param propertyItem a property item */ public SVGPropertiesFontChooserWidget(SVGPropertyItem propertyItem) { super(propertyItem); buildComponent(); } /** * builds the component that will be displayed */ protected void buildComponent(){ //the value of the property String propertyValue=propertyItem.getGeneralPropertyValue(); //builds the array of Integer that will be inserted into the combo box Integer[] obj=new Integer[fontList.size()]; for(int i=0;i<fontList.size();i++){ obj[i]=new Integer(i); } //creates the combo box final JComboBox combo=new JComboBox(obj); combo.setFont(theFont); //creates and sets the renderer FontFamilyRenderer renderer=new FontFamilyRenderer(); combo.setRenderer(renderer); //sets the selected item combo.setSelectedItem(fontFamilyList.contains(propertyValue)?new Integer(fontFamilyList.indexOf(propertyValue)):new Integer(0)); final ActionListener listener=new ActionListener(){ public void actionPerformed(ActionEvent evt) { String value=""; if(combo.getSelectedItem()!=null){ try{ value=(String)(fontFamilyList.get(((Integer)combo.getSelectedItem()).intValue())); }catch (Exception ex){value="";} } //modifies the widgetValue of the property item if(value!=null && !value.equals("")){ propertyItem.changePropertyValue(value); } } }; //adds a listener to the combo box combo.addActionListener(listener); //the panel that will be contained in the widget object JPanel panel=new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); panel.add(combo); component=panel; //creates the disposer disposer=new Runnable(){ public void run() { combo.removeActionListener(listener); } }; } /** * @author Jordi SUC * * the class allowing to display a formatted text in a combo box */ protected class FontFamilyRenderer extends JLabel implements ListCellRenderer { /** * the constructor of the class */ protected FontFamilyRenderer() { setOpaque(true); setHorizontalAlignment(LEFT); setVerticalAlignment(CENTER); } /** * returns the component that will be displayed in a combo box * @param list * @param value * @param index * @param isSelected * @param cellHasFocus * @return the component that will be displayed in a combo box */ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { //gets the selected index int ind= ((Integer)value).intValue(); setBackground(list.getBackground()); setForeground(list.getForeground()); setText((String)fontFamilyList.get(ind)); setFont((Font)fontList.get(ind)); return this; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -