¼¡¤ÎÆü / ºÇ¿· / 2001-10

¤¿¤Þ¤Ë¤Ã¤­¡£ / 2001-10-26

2001-10
Æü·î²Ð¿åÌÚ¶âÅÚ
123456
78910111213
14151617181920
21222324252627
28293031

2001-10-26 Fri

¢£ Collator

ºÇ¶áÉ÷´Ö¤µ¤ó¤Î¡ÖJava ¤Î¹ñºÝ²½¡×¤È¤¤¤¦ËܤòÆÉ¤ó¤Ç¤¤¤ë¡£
¹ñºÝ²½¤Ï±ü¤¬¿¼¤¤¡£¤½¤ÎËܤÎÃæ¤Ë Java ¤Ç¤Î i18n ¤Ë¤ª¤±¤ëʸ»úÎó¤ÎÈæ³Ó¤¬½ñ¤¤¤Æ¤¢¤Ã¤¿¡£
java.text.Collator ¤ò»È¤¦¤½¤¦¤À¡£¤Á¤ç¤¤¤È¥Æ¥¹¥È¥×¥í¥°¥é¥à¤òºî¤Ã¤Æ¤ß¤¿¡£
°Ê²¼¤¬¤½¤ì¡£

import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;

import javax.swing.*;
import javax.swing.border.*;

class CollatorTest extends JFrame{
    private JTextField text1, text2;
    private JLabel     label;
    private Locale locale;

    private JComboBox localesBox, strengthBox, decompositionBox;
    private Locale[] locales;
    private JButton check, refresh;

    private static final int[] COLLATOR_STRENGTH = {
        Collator.PRIMARY, Collator.SECONDARY,
        Collator.TERTIARY, Collator.IDENTICAL,
    };

    private static final int[] COLLATOR_DECOMPOSITION = {
        Collator.FULL_DECOMPOSITION, Collator.CANONICAL_DECOMPOSITION, 
        Collator.NO_DECOMPOSITION,
    };

    public CollatorTest(){
        Container c = getContentPane();

        localesBox = new JComboBox();
        strengthBox = new JComboBox();
        decompositionBox = new JComboBox();

        strengthBox.addItem("PRIMARY");
        strengthBox.addItem("SECONDARY");
        strengthBox.addItem("TERTIARY");
        strengthBox.addItem("IDENTICAL");

        decompositionBox.addItem("Full");
        decompositionBox.addItem("Canonical");
        decompositionBox.addItem("No");

        c.setLayout(new BorderLayout());
        JPanel north = new JPanel(new GridLayout(1, 3));
        north.add(text1 = new JTextField());
        north.add(label = new JLabel("", JLabel.CENTER));
        north.add(text2 = new JTextField());

        JPanel center = new JPanel(new GridLayout(3, 1));
        center.add(localesBox);
        center.add(strengthBox);
        center.add(decompositionBox);

        localesBox.setBorder(new TitledBorder("Locale"));
        strengthBox.setBorder(new TitledBorder("Strength"));
        decompositionBox.setBorder(new TitledBorder("Decomposition"));

        JPanel south = new JPanel(new FlowLayout(FlowLayout.CENTER));
        south.add(check = new JButton("check"));
        south.add(refresh = new JButton("refresh"));

        c.add(north,  BorderLayout.NORTH);
        c.add(center, BorderLayout.CENTER);
        c.add(south,  BorderLayout.SOUTH);

        check.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                check();
            }
        });

        refresh.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                int index = localesBox.getSelectedIndex();

                if(index >= 0) locale = locales[index];
                refresh();
            }
        });

        locales = Locale.getAvailableLocales();
        locale = Locale.getDefault();

        refresh();

        pack();
    }

    private void refresh(){
        localesBox.removeAllItems();

        for(int i = 0; i < locales.length; i++){
            localesBox.addItem(locales[i].getDisplayName(locale));
        }

        localesBox.setSelectedItem(locale.getDisplayName(locale));
    }

    private void check(){
        int s = COLLATOR_STRENGTH[strengthBox.getSelectedIndex()];
        int c = COLLATOR_DECOMPOSITION[decompositionBox.getSelectedIndex()];

        Locale l = locales[localesBox.getSelectedIndex()];

        String t1 = text1.getText();
        String t2 = text2.getText();

        if(t1 == null || t2 == null || t1.equals("") || t2.equals("")){
            return;
        }

        Collator collator = Collator.getInstance(l);
        collator.setStrength(s);
        collator.setDecomposition(c);

        int r = collator.compare(t1, t2);

        if(r < 0)       label.setText(" < ");
        else if(r == 0) label.setText(" = ");
        else            label.setText(" > ");
    }

    public static void main(String[] args){
        CollatorTest test = new CollatorTest();
        test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        test.setVisible(true);

    }
}


¤³¤³¤Þ¤Ç¥æ¡¼¥¶¥×¥í¥°¥é¥à¤Ç¤ä¤ë¤Î¤âÌÌÅݤÀ¤È´¶¤¸¤¿¡£

java.sql ¥Ñ¥Ã¥±¡¼¥¸¤Ë¤·¤Æ¤âÌÌÅݤÀ¤È´¶¤¸¤ë¡£
¥ª¥Ö¥¸¥§¥¯¥È»×¹Í¤Ê¤Î¤Ë¤Ê¤¼¤³¤ó¤Ê¤³¤È¤ò¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤Î¤À¤í¤¦¤«¡£

Ëͤ¬»×¤¦¤Ë¥ª¥Ö¥¸¥§¥¯¥È»×¹Í¤È¤¤¤¦¤â¤Î¤Ï¡¢Î㤨¤Ð Java ¤Î java.util.Hashtable ¤òÎã¤Ë¤¢¤²¤ë¤¬¡¢
¤³¤ì¤ò¥¹¥È¥¢¤¹¤ë¾ì¹ç¡¢java.io.ObjectOutputStream ¤ò»È¤¦¡£
¤½¤ì¤ÈƱ¤¸¤è¤¦¤Êµ¡Ç½¤ò java.sql ¥Ñ¥Ã¥±¡¼¥¸¤ò»È¤Ã¤Æ¤â¼ÂÁõ¤¹¤ë¤³¤È¤¬²Äǽ¤À¡£
¤½¤ì¤Ê¤Î¤Ë¡¢Î¾¼Ô¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬°ã¤¦¤Î¤¬µ¤¤ËÆþ¤é¤Ê¤¤¡£

¤É¤¦¤»¤Ê¤é½ÐÎÏÀè¤òµ¤¤Ë¤»¤º¤Ë¥×¥í¥°¥é¥à¤òÁȤߤ¿¤¤¤â¤Î¤À¡£

Category: [Java]

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12

ºÇ½ª¹¹¿·»þ´Ö: 2008-09-04 19:19

¼¡¤ÎÆü / ºÇ¿· / 2001-10

¥«¥Æ¥´¥ê