Java by API/javax.swing.plaf.synth/SynthLookAndFeel — различия между версиями

Материал из Java эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 14:33, 31 мая 2010

new SynthLookAndFeel()

import java.awt.BorderLayout;
import java.io.InputStream;
import java.text.ParseException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.plaf.synth.SynthLookAndFeel;
public class MainClass {
  public static void main(String args[]) {
    SynthLookAndFeel synth = new SynthLookAndFeel();
    try {
      Class aClass = MainClass.class;
      InputStream is = aClass.getResourceAsStream("config.xml");
      if (is == null) {
        System.err.println("Unable to find theme configuration");
        System.exit(-1);
      }
      synth.load(is, aClass);
    } catch (ParseException e) {
      System.err.println("Unable to load theme configuration");
      System.exit(-2);
    }
    try {
      UIManager.setLookAndFeel(synth);
    } catch (javax.swing.UnsupportedLookAndFeelException e) {
      System.err.println("Unable to change look and feel");
      System.exit(-3);
    }
    JFrame frame = new JFrame("Synth Sample");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton button = new JButton("Hello, Synth");
    frame.add(button, BorderLayout.CENTER);
    JTextField textField = new JTextField();
    frame.add(textField, BorderLayout.SOUTH);
    frame.setSize(300, 200);
    frame.setVisible(true);}
}
//File: config.xml
/*<synth>
  <style id="button">
    <font name="Monospaced" size="24" style="BOLD"/>
    <state value="MOUSE_OVER">
      <font name="SansSerif" size="48" style="ITALIC"/>
      <opaque value="TRUE"/>
      <color value="BLUE" type="BACKGROUND"/>
    </state>
    <state value="PRESSED">
      <font name="Serif" size="36" style="BOLD AND ITALIC"/>
      <opaque value="TRUE"/>
      <color value="RED" type="BACKGROUND"/>
    </state>
  </style>
  <bind style="button" type="region" key="Button"/>
  <style id="textfield">
     <opaque value="true"/>
     <state>
        <color value="#C2E2CF" type="BACKGROUND"/>
        <color value="#000000" type="TEXT_FOREGROUND"/>
     </state>
     <imagePainter method="textFieldBorder" path="text.png"
        sourceInsets="3 3 3 3" paintCenter="false"/>
     <insets top="3" left="3" bottom="3" right="3"/>
  </style>
  <bind style="textfield" type="region" key="TextField"/>
</synth>
*/





SynthLookAndFeel: load(InputStream input, Class resourceBase)

import java.awt.BorderLayout;
import java.io.InputStream;
import java.text.ParseException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.plaf.synth.SynthLookAndFeel;
public class MainClass {
  public static void main(String args[]) {
    SynthLookAndFeel synth = new SynthLookAndFeel();
    try {
      Class aClass = MainClass.class;
      InputStream is = aClass.getResourceAsStream("config.xml");
      if (is == null) {
        System.err.println("Unable to find theme configuration");
        System.exit(-1);
      }
      synth.load(is, aClass);
    } catch (ParseException e) {
      System.err.println("Unable to load theme configuration");
      System.exit(-2);
    }
    try {
      UIManager.setLookAndFeel(synth);
    } catch (javax.swing.UnsupportedLookAndFeelException e) {
      System.err.println("Unable to change look and feel");
      System.exit(-3);
    }
    JFrame frame = new JFrame("Synth Sample");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton button = new JButton("Hello, Synth");
    frame.add(button, BorderLayout.CENTER);
    JTextField textField = new JTextField();
    frame.add(textField, BorderLayout.SOUTH);
    frame.setSize(300, 200);
    frame.setVisible(true);}
}
//File: config.xml
/*<synth>
  <style id="button">
    <font name="Monospaced" size="24" style="BOLD"/>
    <state value="MOUSE_OVER">
      <font name="SansSerif" size="48" style="ITALIC"/>
      <opaque value="TRUE"/>
      <color value="BLUE" type="BACKGROUND"/>
    </state>
    <state value="PRESSED">
      <font name="Serif" size="36" style="BOLD AND ITALIC"/>
      <opaque value="TRUE"/>
      <color value="RED" type="BACKGROUND"/>
    </state>
  </style>
  <bind style="button" type="region" key="Button"/>
  <style id="textfield">
     <opaque value="true"/>
     <state>
        <color value="#C2E2CF" type="BACKGROUND"/>
        <color value="#000000" type="TEXT_FOREGROUND"/>
     </state>
     <imagePainter method="textFieldBorder" path="text.png"
        sourceInsets="3 3 3 3" paintCenter="false"/>
     <insets top="3" left="3" bottom="3" right="3"/>
  </style>
  <bind style="textfield" type="region" key="TextField"/>
</synth>
*/