Невозможно использовать интерфейс Sea Glass Look and Feel вместе с JFreeChart

Когда я использовал внешний вид Sea-glass с JFreechart, диаграмма отображалась нормально, но Sea-Glass вообще не изменил внешний вид, хотя когда Sea-Glass использовался без Jfreechart, он работал.

Итак, в чем может быть причина?

public static void main(String[] args) throws Exception{

        EventQueue.invokeLater(new Runnable() {
            public void run() { 
try {
    UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel");
    JFreeChart chart = chart_producer(url) //my own static method to make the chart//
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    ChartPanel chartPanel = new ChartPanel(chart);
    //chartPanel.setPopupMenu(null);
    //chartPanel.setMouseZoomable(false);
    panel.add(chartPanel);
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
} catch (ClassNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (InstantiationException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (IllegalAccessException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
};
        }
        );
    }

person TU_HEO DAKAI    schedule 30.03.2012    source источник
comment
@TU_HEO Если вы используете другой пользовательский внешний вид, он ведет себя так же? Или это поведение специально для SeaGlass?   -  person Radu Murzea    schedule 30.03.2012
comment
@Sobo: Нет, SeaGlass - мой единственный внешний вид, и он до сих пор не работает.   -  person TU_HEO DAKAI    schedule 30.03.2012


Ответы (1)


Обратите внимание, что JFreeChart не JComponent. У него нет делегата пользовательского интерфейса для изменения. В качестве альтернативы может быть эффективным применение ChartTheme. .

Приложение: Хотя диаграмма не является компонентом, ее можно добавить в ChartPanel как часть произвольного L&F/layout, как показано здесь, здесь и здесь.

person trashgod    schedule 30.03.2012
comment
Sea-Glass работает не так, как новый Jframe (с морским стеклом) выглядит точно так же, как без Sea-Glass. - person TU_HEO DAKAI; 30.03.2012
comment
@TU_HEO DAKAI вы можете применять Look and Feel только к JComponents, JFreeChart не является частью JComponents - person mKorbel; 30.03.2012
comment
@mKorbel: как насчет JFrame (содержащего JFreeChart)? В моем случае Sea-Glass не вносит никаких изменений в JFrame: кнопки min, max, close... - person TU_HEO DAKAI; 30.03.2012
comment
@TU_HEO DAKAI Это неправильный, очень неправильный способ создания нового JFrame, используйте JDialog, JWindow только для всплывающего окна, в противном случае посмотрите CardLayout, для изменения L&F во время выполнения вы можете посмотреть SwingUtilities.updateComponentTreeUI(frame); - person mKorbel; 30.03.2012
comment
@mKorbel: правильно; больше выше. Каркасные украшения относятся к принимающей платформе. - person trashgod; 30.03.2012