Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли в Java Font Dialog 
V
    Опции темы
Platon
Дата 22.2.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 4
Всего: 40



Здравствуйте, уважаемые.

Меня интересует есть ли в такой диалог JFontChooser, JFontDialog или что-нибудь в этом роде..?
PM MAIL ICQ   Вверх
powerOn
Дата 22.2.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Цитата(Platon @  22.2.2008,  10:06 Найти цитируемый пост)
Меня интересует есть ли в такой диалог JFontChooser, JFontDialog или что-нибудь в этом роде..? 

Стандартных нет. Что в свое время меня тоже смутило. Пришлось писать самому, получилось примерно следующее:

Панель для выбора шрифта:
Код

import java.awt.Font;
import java.awt.GraphicsEnvironment;

public class FontChooserPanel extends javax.swing.JPanel
{
    private boolean bold = false;
    private boolean italic = false;
    private Font selectedFont;
    
    /** Creates new form FontChooser */
    public FontChooserPanel()
    {
        initComponents();
        
        String [] fonts = GraphicsEnvironment.
                getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
        
        if (fonts.length > 0)
        {
            jFontList.setListData(fonts);
            jFontList.setSelectedIndex(0);
        }
    }
    
    private void initComponents() 
    {
        jPreviewLabel = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jFontList = new javax.swing.JList();
        jSettingsPanel = new javax.swing.JPanel();
        jSizeLabel = new javax.swing.JLabel();
        jFontSizeComboBox = new javax.swing.JComboBox();
        jBoldCheckBox = new javax.swing.JCheckBox();
        jItalicCheckBox = new javax.swing.JCheckBox();

        setLayout(new java.awt.BorderLayout());

        jPreviewLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jPreviewLabel.setText("Aa Bb Cc");
        jPreviewLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        add(jPreviewLabel, java.awt.BorderLayout.SOUTH);

        jFontList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                jFontListValueChanged(evt);
            }
        });
        jScrollPane1.setViewportView(jFontList);

        add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jSizeLabel.setText("Size:");
        jSettingsPanel.add(jSizeLabel);

        jFontSizeComboBox.setEditable(true);
        jFontSizeComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "6", "7", "8", "9", "10", "12", "14", "16", "18", "20", "22", "24", "28", "32", "36", "48", "54", "60", "72" }));
        jFontSizeComboBox.setSelectedIndex(7);
        jFontSizeComboBox.setMinimumSize(new java.awt.Dimension(70, 24));
        jFontSizeComboBox.setPreferredSize(new java.awt.Dimension(70, 24));
        jFontSizeComboBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jFontSizeComboBoxActionPerformed(evt);
            }
        });
        jSettingsPanel.add(jFontSizeComboBox);

        jBoldCheckBox.setText("Bold");
        jBoldCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jBoldCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jBoldCheckBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBoldCheckBoxActionPerformed(evt);
            }
        });
        jSettingsPanel.add(jBoldCheckBox);

        jItalicCheckBox.setText("Italic");
        jItalicCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jItalicCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jItalicCheckBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jItalicCheckBoxActionPerformed(evt);
            }
        });
        jSettingsPanel.add(jItalicCheckBox);

        add(jSettingsPanel, java.awt.BorderLayout.PAGE_START);
    }

    private void jItalicCheckBoxActionPerformed(java.awt.event.ActionEvent evt) 
    {
        italic = jItalicCheckBox.isSelected();
        changeFont();
    }

    private void jBoldCheckBoxActionPerformed(java.awt.event.ActionEvent evt) 
    {
        bold = jBoldCheckBox.isSelected();
        changeFont();
    }

    private void jFontListValueChanged(javax.swing.event.ListSelectionEvent evt) 
    {
        changeFont();
    }
    
    private void jFontSizeComboBoxActionPerformed(java.awt.event.ActionEvent evt) 
    {
        changeFont();
    }
        
    private void changeFont()
    {
        try
        {
            String fontName = (String) jFontList.getSelectedValue();
            int fontSize = Integer.parseInt((String) jFontSizeComboBox.getSelectedItem());
            
            int style = Font.PLAIN;
            
            if (bold) style = style | Font.BOLD;
            if (italic) style = style | Font.ITALIC;
            
            if ( (fontName != null) && (fontName.length() > 0))
            {
                selectedFont = new Font(fontName, style, fontSize);
                jPreviewLabel.setFont(selectedFont);
            }
        }
        catch (NumberFormatException ex)
        {
            ex.printStackTrace();
        }
    }

    public Font getSelectedFont()
    {
        return selectedFont;
    }
    
    private javax.swing.JCheckBox jBoldCheckBox;
    private javax.swing.JList jFontList;
    private javax.swing.JComboBox jFontSizeComboBox;
    private javax.swing.JCheckBox jItalicCheckBox;
    private javax.swing.JLabel jPreviewLabel;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel jSettingsPanel;
    private javax.swing.JLabel jSizeLabel;
}


Сам диалог:
Код

import java.awt.Font;

public class JFontChooserDialog extends javax.swing.JDialog
{
    public final static int CANCEL_OPTION = 0;
    public final static int OK_OPTION = 1;
    
    private int exitCode = CANCEL_OPTION;
   
    /** Creates new form JFontChooserDialog */
    public JFontChooserDialog(java.awt.Frame parent, boolean modal)
    {
        super(parent, modal);
        initComponents();
    }
    
    private void initComponents() 
    {
        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        fontChooser1 = new com.waxid.gui.texteditor.FontChooserPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Select a font.");

        jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        jButton1.setText("OK");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton1);

        jButton2.setText("CANCEL");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton2);

        getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);
        getContentPane().add(fontChooser1, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)                                         
    {                                             
        exitCode = CANCEL_OPTION;
        dispose();
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)                                         
    {                                             
        exitCode = OK_OPTION;
        dispose();
    }                                        
    
    public int getExitCode()
    {
        return exitCode;
    }
    
    public Font getSelectedFont()
    {
        return fontChooser1.getSelectedFont();
    }
    
    public static Font showFontDialog(java.awt.Frame parent, boolean modal)
    {
        JFontChooserDialog dialog = new JFontChooserDialog(parent, modal);
        dialog.setLocationRelativeTo(parent);
        dialog.pack();
        dialog.setVisible(true);
        
        if (dialog.getExitCode() == JFontChooserDialog.CANCEL_OPTION)
        {
            return null;
        }
        return dialog.getSelectedFont();
    }

    private FontChooserPanel fontChooser1;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JPanel jPanel1;
}


Ты можешь доработать данный код под свои нужды, ну или найти в сети что-нибудь другое. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Platon
Дата 22.2.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 4
Всего: 40



Здорово! То, что нужно! Спасибо!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0736 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.