Соответствует ли внешний вид и поведение Java Mac OSX изменениям шрифта UIManager? - PullRequest
1 голос
/ 23 мая 2010

У меня есть Java-апплет, и единственное, что работает и работает правильно, это родной Mac. Я хотел сделать шрифты немного больше и попробовал использовать стандартные методы UIManager

UIManager.put ("Label.font", новый шрифт ("Georgia", Font.PLAIN, 18));

Это не производит никаких изменений. Конечно, это не исключение.

Кто-нибудь знает, игнорирует ли этот внешний вид Mac эти ощущения?

Я знаю, что есть конкретные способы сделать элементы управления разных размеров на Mac, но они только уменьшают их. Вы не можете сделать элементы управления больше обычных.

Ответы [ 2 ]

1 голос
/ 24 мая 2010

Метод updateComponentTreeUI (...) (на который ссылается ссылка «Изменение LAF после запуска», предоставленная trashgod) будет работать только с FontUIResource, а не с шрифтом. Это актуально, только если вам нужно изменить шрифт несколько раз после запуска.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.plaf.*;

public class ChangeFont extends JFrame
{
    private int size = 12;
    private JComponent component;

    public ChangeFont()
    {
        JTextArea textArea = new JTextArea();
        textArea.append( "updateComponentTreeUI will only work on a FontUIResource\n\n" );
        textArea.append( "1) click the FontUIResource button as many times as you want\n" );
        textArea.append( "2) after you click the Font button, neither button will work" );
        getContentPane().add(textArea, BorderLayout.NORTH);

        JButton west = new JButton( "FontUIResource" );
        west.addActionListener( new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                update( new FontUIResource("monospaced", Font.PLAIN, size) );
            }
        });
        getContentPane().add(west, BorderLayout.WEST );

        JButton east = new JButton( "Font" );
        east.addActionListener( new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                update( new Font("monospaced", Font.PLAIN, size) );
            }
        });
        getContentPane().add(east, BorderLayout.EAST );

        component = new JTable(5, 5);
        getContentPane().add(component, BorderLayout.SOUTH);
    }

    private void update(Font font)
    {
        UIManager.put("Table.font", font);
        UIManager.put("TextArea.font", font);
        SwingUtilities.updateComponentTreeUI( this );
        size += 2;
        pack();
    }

    public static void main(String[] args)
    {
        ChangeFont frame = new ChangeFont();
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    }
}
1 голос
/ 24 мая 2010

Похоже, что работает на Mac OS X с любым установленным L & F.

Приложение: Если вы пытаетесь изменить настройку после запуска, см. Как настроить внешний вид в разделе Изменение внешнего вида и ощущения после запуска .

public final class Laf {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                UIManager.put("Label.font", new Font("Georgia", Font.PLAIN, 18));
                f.add(new JLabel("Test"));
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

public final class LafApplet extends JApplet {

    @Override
    public void init() {
        UIManager.put("Label.font", new Font("Georgia", Font.PLAIN, 18));
        this.add(new JLabel("Test"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...