You are on page 1of 21

import java.io.*; import import import import java.awt.*; java.awt.event.*; java.awt.image.*; java.awt.font.

*;

import java.text.*; import javax.swing.*; import javax.swing.text.JTextComponent; import javax.imageio.*; import org.xml.sax.*; import org.xml.sax.helpers.*;

/** * * * */ final public class PictureGame extends JPanel implements ActionListener { /** Menubar object*/ private JMenuBar mb; /** Font family box*/ private JComboBox fmBox; /** Font size*/ private JComboBox szBox; private JComboBox anBox; /** Font style*/ static private JComboBox stlBox; /** Font color*/ private JButton clButton; /** Gradient x 1*/ private JTextField gradX_1_Field; /** Gradient y 1*/ private JTextField gradY_1_Field; /** Gradient x 2*/ private JTextField gradX_2_Field; /** Gradient y 2*/ private JTextField gradY_2_Field;

/** Text x*/ private JTextField xField; /** Text y*/ private JTextField yField; /** Banner width*/ private JTextField wField; /** Banner height*/ private JTextField hField; /** Gradient is cycle?*/ private JComboBox cycleBox; /** Use render quality, antialias etc?*/ private JCheckBox isRenderCB; /** Use gradient or no?*/ private JCheckBox selectedCB; /** Banner text*/ private JTextField textField; /** File selection tool*/ private static final JFileChooser jfc = new JFileChooser (); /** Font color*/ private Color fontColor = Color.black; /** First gradient color*/ private JButton gradColor_1_Button; /** Second gradient color*/ private JButton gradColor_2_Button; /** Gradient color 1*/ private Color gradColor_1 = null; /** Gradient color 2*/ private Color gradColor_2 = null; /** Image panel*/ private JPanel bot; /** Banner image*/ private BufferedImage bimg; /** Components*/ private JComponent [] components; /** Components count*/ private int componentsLength = 0; /** XMLReader object*/ private XMLReader xmlreader; /** Custom Content handler*/ private ContentHandler handler = null;

/** Singleton constructor*/ private PictureGame () { super (new BorderLayout ()); jfc.addChoosableFileFilter (new javax.swing.filechooser.FileFilter () { public boolean accept (File f) { if (f.isDirectory ()) return true; String name = (f.getName ()).toLowerCase (); if (name.endsWith (".xml")) { return true; } return false; } public String getDescription () { return "xml files"; } }); jfc.addChoosableFileFilter (new javax.swing.filechooser.FileFilter () { public boolean accept (File f) { if (f.isDirectory ()) return true; String name = (f.getName ()).toLowerCase (); if (name.endsWith (".jpg") || name.endsWith (".jpeg") || name.endsWith (".gif") || name.endsWith (".png")) { return true; } return false; } public String getDescription () { return "jpg, gif, png files"; } }); jfc.setAcceptAllFileFilterUsed (false); jfc.setCurrentDirectory (new File ("images")); mb = new JMenuBar (); JPanel mbpanel = new JPanel (new BorderLayout ()); mbpanel.add ("Center", mb); JMenu fileMenu = getMenu ("File"); fileMenu.setMnemonic (KeyEvent.VK_ALT); mb.add (fileMenu); JMenuItem readItem = getItem ("Read XML"); readItem.addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent evt) { Thread t = new Thread () { public void run () { readPAD (); fontColor = clButton.getBackground (); gradColor_1 = gradColor_1_Button.getBackground (); gradColor_2 = gradColor_2_Button.getBackground (); } }; t.start (); } }); fileMenu.addSeparator (); fileMenu.add (readItem); fileMenu.addSeparator (); StringBuffer sb = new StringBuffer (); sb.append ("*** PROGRAM INI DIBUAT OLEH GALIH HASBUL QAHAR ***\n"); sb.append ("\n"); sb.append ("Nama : Ghali Hasbul Qahar\n"); sb.append ("Status : Lajang\n"); sb.append ("Usia : 19 Tahun\n"); sb.append ("Alamat : Jl.madrasah no 38\n"); sb.append (" RT/RW 003/02 Kel.Pondok Ranggon Kec.Cipay ung\n"); sb.append ("Pekerjaan : Mahasiswa\n"); final String LIC = sb.toString (); sb = null; JMenuItem licenseItem = getItem ("About"); licenseItem.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { Runnable r = new Runnable () { public void run () { JOptionPane.showMessageDialog (mb, LIC); return; } }; javax.swing.SwingUtilities.invokeLater (r); } }); fileMenu.add (licenseItem); fileMenu.addSeparator (); JMenuItem exitItem = getItem ("Exit"); exitItem.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { visitus (); System.exit (0);

} }); fileMenu.add (exitItem); add ("North", mbpanel); JPanel top = new JPanel (new GridLayout (10, 4, 2, 2)); bot = new XPanel (); JSplitPane pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT, top, new JScrollPane (bot)); pane.setOneTouchExpandable (true); JLabel wLabel = getLabel ("Lebar:"); top.add (wLabel); wField = getField (""); top.add (wField); JLabel hLabel = getLabel ("Panjang:"); top.add (hLabel); hField = getField (""); top.add (hField); JLabel fmLabel = getLabel ("Font:"); top.add (fmLabel); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); String [] fnames = ge.getAvailableFontFamilyNames (); fmBox = getComboBox (fnames); top.add (fmBox);

JLabel szLabel = getLabel ("Size:"); top.add (szLabel); String [] szs = new String [33]; for (int i=0; i<=32; i++) { szs [i] = Integer.toString (i+8); } szBox = getComboBox (szs); top.add (szBox); JLabel stLabel = getLabel ("Type:"); top.add (stLabel); String styles [] = new String [] { "Plain", "Bold", "Italic", "Bold+Italic" }; stlBox = getComboBox (styles); top.add (stlBox); JLabel clLabel = getLabel ("Warna Teks:"); top.add (clLabel);

clButton = getButton (); clButton.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { Color c = JColorChooser.showDialog (clButton, "Font color", Colo r.black); if (c != null) { fontColor = c; clButton.setBackground (fontColor); return; } else { fontColor = Color.black; clButton.setBackground (fontColor); return; } } }); top.add (clButton); JLabel xLabel = getLabel ("posisi x:"); top.add (xLabel); xField = getField (""); top.add (xField); JLabel yLabel = getLabel ("posisi y:"); top.add (yLabel); yField = getField (""); top.add (yField); JLabel gradX_1_Label = getLabel ("Grad x1:"); top.add (gradX_1_Label); gradX_1_Field = getField (""); top.add (gradX_1_Field); JLabel gradY_1_Label = getLabel ("Grad y1:"); top.add (gradY_1_Label); gradY_1_Field = getField (""); top.add (gradY_1_Field); JLabel gradX_2_Label = getLabel ("Grad x2:"); top.add (gradX_2_Label); gradX_2_Field = getField (""); top.add (gradX_2_Field); JLabel gradY_2_Label = getLabel ("Grad y2:"); top.add (gradY_2_Label); gradY_2_Field = getField (""); top.add (gradY_2_Field); JLabel gradColor_1_Label = getLabel ("Grad Color 1:"); top.add (gradColor_1_Label); gradColor_1_Button = getButton ();//Declared final for usinf inner below gradColor_1_Button.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt) { Color c = JColorChooser.showDialog (clButton, "Font color", Colo r.white); if (c != null) { gradColor_1 = c; gradColor_1_Button.setBackground (gradColor_1); return; } else { gradColor_1 = Color.white; gradColor_1_Button.setBackground (gradColor_1); return; } } }); top.add (gradColor_1_Button); JLabel gradColor_2_Label = getLabel ("Grad Color 2:"); top.add (gradColor_2_Label); gradColor_2_Button = getButton (); gradColor_2_Button.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { Color c = JColorChooser.showDialog (clButton, "Font color", Colo r.white); if (c != null) { gradColor_2 = c; gradColor_2_Button.setBackground (gradColor_2); return; } else { gradColor_2 = Color.white; gradColor_2_Button.setBackground (gradColor_2); return; } } }); top.add (gradColor_2_Button); JLabel gradCycleLabel = getLabel ("Pernyataan:"); top.add (gradCycleLabel); cycleBox = getComboBox (new String []{"true", "false"}); top.add (cycleBox); isRenderCB = getCheckBox ("Use Render:"); top.add (isRenderCB); selectedCB = getCheckBox ("Gradient: "); top.add (selectedCB); JLabel textLabel = getLabel ("Text:"); top.add (textLabel);

textField = getField (""); top.add (textField); JButton saveButton = getButton (); saveButton.setText ("Save"); saveButton.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { Thread t = new Thread () { public void run () { saveIt (); } }; t.start (); } }); top.add (saveButton);

JButton generateButton = getButton (); generateButton.setText ("Generate"); generateButton.addActionListener (this); top.add (generateButton); JButton openButton = getButton (); openButton.setText ("Open"); openButton.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { Thread t = new Thread () { public void run () { int r = jfc.showOpenDialog (stlBox); if (r != JFileChooser.APPROVE_OPTION) return; File f = jfc.getSelectedFile (); BufferedImage bi = null; try { bi = ImageIO.read (f); } catch (Exception e) { return; } if (bi != null) { bimg = bi; bot.repaint (); } }

}; t.start (); } }); top.add (openButton); JButton resetButton = getButton (); resetButton.setText ("Clear"); resetButton.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { bimg = null; bot.repaint (); } }); top.add (resetButton); JButton exitButton = getButton (); exitButton.setText ("Exit"); exitButton.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { visitus (); System.exit (0); } }); top.add (exitButton); add ("Center", pane); components = new JComponent [] { fmBox, anBox, szBox, stlBox, clButton, gradX_1_Field, gradY_1_Field, gradX_2_Field, gradY_2_Field, gradColor_1_Button, gradColor_2_Button, xField, yField, wField, hField, cycleBox, isRenderCB, selectedCB, textField }; componentsLength= components.length; setNames (); try { xmlreader = XMLReaderFactory.createXMLReader (); xmlreader.setContentHandler (handler); } catch (Exception e) { xmlreader = null; } } //end of constructor private final void setNames () {

wField.setName ("Banner_Width"); hField.setName ("Banner_Height"); textField.setName ("Banner_Text"); xField.setName ("Banner_Text_X"); yField.setName ("Banner_Text_Y"); fmBox.setName ("Font_Family"); szBox.setName ("Font_Size"); stlBox.setName ("Font_Style"); clButton.setName ("Font_Color"); isRenderCB.setName ("Is_Rendering"); selectedCB.setName ("Is_Gradient"); cycleBox.setName ("Gradient_Is_Cycle"); gradX_1_Field.setName ("Gradient_X_1"); gradY_1_Field.setName ("Gradient_Y_1"); gradColor_1_Button.setName ("Gradient_Color_1"); gradX_2_Field.setName ("Gradient_X_2"); gradY_2_Field.setName ("Gradient_Y_2"); gradColor_2_Button.setName ("Gradient_Color_2"); }; //setnames /** Registered file num*/ private int fnum = 0; /** Register coordinate into a file*/ private final void regIt () { try { File fd = new File ("images/xml"); if (fd.exists () && fd.isFile ()) { JOptionPane.showMessageDialog (stlBox, "There is not images/xml folder. Produce it before"); return; }; if (fd.exists () == false) fd.mkdir (); jfc.setCurrentDirectory (fd); int rep = jfc.showSaveDialog (stlBox); if (rep != JFileChooser.APPROVE_OPTION) return; File dest = jfc.getSelectedFile (); String CRLF = "\r\n"; StringBuffer sb = new StringBuffer (); sb.append sb.append sb.append sb.append (""); sb.append (CRLF); (""); sb.append (CRLF); (""); (CRLF);

sb.append (""); sb.append (CRLF); sb.append (""); sb.append (CRLF); sb.append (""); sb.append (CRLF);

sb.append (""); sb.append (CRLF); sb.append (""); sb.append (CRLF); String fname = (String)(fmBox.getSelectedItem ()); int style = stlBox.getSelectedIndex (); int size = Integer.parseInt ((String)(szBox.getSelectedItem ())); Color cf = fontColor; sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append ("\t\t<Font_Family>"); (fname); ("</Font_Family>"); (CRLF); ("\t\t<Font_Size>"); (Integer.toString (size)); ("</Font_Size>"); (CRLF); ("\t\t<Font_Style>"); (Integer.toString (style)); ("</Font_Style>"); (CRLF); ("\t\t<Font_Color>"); (Integer.toString (cf.getRGB ())); ("</Font_Color>"); (CRLF);

String banw = wField.getText (); String banh = hField.getText (); sb.append sb.append sb.append sb.append sb.append sb.append sb.append sb.append ("\t\t<Banner_Width>"); (banw); ("</Banner_Width>"); (CRLF); ("\t\t<Banner_Height>"); (banh); ("</Banner_Height>"); (CRLF);

String text = textField.getText (); sb.append sb.append sb.append sb.append ("\t\t<Banner_Text>"); (text); ("</Banner_Text>"); (CRLF);

String tx = xField.getText (); String ty = yField.getText (); sb.append sb.append sb.append sb.append ("\t\t<Banner_Text_X>"); (tx); ("</Banner_Text_X>"); (CRLF);

sb.append sb.append sb.append sb.append

("\t\t<Banner_Text_Y>"); (ty); ("</Banner_Text_Y>"); (CRLF);

String render = (isRenderCB.isSelected ()?"true":"false"); sb.append sb.append sb.append sb.append ("\t\t<Is_Rendering>"); (render); ("</Is_Rendering>"); (CRLF);

String gradient = (selectedCB.isSelected ()?"true":"false"); if (gradient.equals ("true")) { sb.append ("\t\t<Is_Gradient>"); sb.append (gradient); sb.append ("</Is_Gradient>"); sb.append (CRLF); String cyc = (String)cycleBox.getSelectedItem (); sb.append ("\t\t<Gradient_Is_Cycle>"); sb.append (cyc); sb.append ("</Gradient_Is_Cycle>"); sb.append (CRLF); String gx1 = gradX_1_Field.getText (); sb.append ("\t\t<Gradient_X_1>"); sb.append (gx1); sb.append ("</Gradient_X_1>"); sb.append (CRLF); String gy1 = gradY_1_Field.getText (); sb.append ("\t\t<Gradient_Y_1>"); sb.append (gy1); sb.append ("</Gradient_Y_1>"); sb.append (CRLF); String gc1 = Integer.toString (gradColor_1.getRGB ()); sb.append ("\t\t<Gradient_Color_1>"); sb.append (gc1); sb.append ("</Gradient_Color_1>"); sb.append (CRLF); String gx2 = gradX_2_Field.getText (); sb.append ("\t\t<Gradient_X_2>"); sb.append (gx2); sb.append ("</Gradient_X_2>"); sb.append (CRLF); String gy2 = gradY_2_Field.getText (); sb.append ("\t\t<Gradient_Y_2>"); sb.append (gy2); sb.append ("</Gradient_Y_2>"); sb.append (CRLF); String gc2 = Integer.toString (gradColor_2.getRGB ()); sb.append ("\t\t<Gradient_Color_2>");

sb.append (gc2); sb.append ("</Gradient_Color_2>"); sb.append (CRLF); } sb.append sb.append sb.append sb.append ("\t</Data>"); (CRLF); ("</BANNER>"); (CRLF);

String sbstr = sb.toString (); sb = null; OutputStream fos = new FileOutputStream (dest); OutputStream bos = new BufferedOutputStream (fos); PrintStream ps = new PrintStream (bos, true, "UTF-8"); ps.print (sbstr); ps.flush (); ps.close (); bos.flush (); bos.close (); fos.flush (); fos.close (); JOptionPane.showMessageDialog ( stlBox, ("Saved "+dest.getAbsolutePath ()+""), "Saved", JOptionPane.INFORMATION_MESSAGE); return; } catch (Exception e) { e.printStackTrace (); JOptionPane.showMessageDialog ( stlBox, "Error while registering datas!", "Error", JOptionPane.ERROR_MESSAGE); return; } } /** Save image*/ private final void saveIt () { if (bimg == null) return; int r = jfc.showSaveDialog (stlBox); if (r != JFileChooser.APPROVE_OPTION) return; File f = jfc.getSelectedFile (); String name = f.getName (); if (valid (name) == false) return; String format = format (name); try { ImageIO.write (bimg, format, f); JOptionPane.showMessageDialog (stlBox, "Saved: "+name+""); }

catch (Exception e) { JOptionPane.showMessageDialog (stlBox, "Could Not Saved: "+name+"", "Error", JOptionPane.ERROR_MESSAGE); return; } return; } /** * @param name File name * * @return If is an image file true, otherwise false */ private final boolean valid (String name) { String sx = name.toLowerCase (); if (sx.endsWith (".jpg") || sx.endsWith (".jpeg") || sx.endsWith (".gif") || sx.endsWith (".png")) { return true; } return false; } /** * @param name File name * * @return Fiel format */ private final String format (String name) { String sx = name.toLowerCase (); if (sx.endsWith (".jpg")) return "JPG"; if (sx.endsWith (".jpeg")) return "JPEG"; if (sx.endsWith (".gif")) return "GIF"; if (sx.endsWith (".png")) return "PNG"; return "JPG"; } /** Opens productor web page*/ static private final void visitus () { try { int o = JOptionPane.showConfirmDialog ( stlBox, "Do you want to visit us?"); if (o != 0) return; Runtime rt = Runtime.getRuntime (); String os = System.getProperty ("os.name"); String CMD = ""; if (os.indexOf ("Windows") >= 0x0) { CMD = ""; } else

{ CMD = ""; } Process p = rt.exec (CMD); p.waitFor (); } catch (Exception e) { return; } } /** * @param s The text of component * @return A custom component */ private final JLabel getLabel (String s) { JLabel l = new JLabel (s, JLabel.LEFT); return l; } /** * @param s The text of component * @return A custom component */ private final JMenu getMenu (String s) { JMenu m = new JMenu (s); return m; } /** * @param s The text of component * @return A custom component */ private final JMenuItem getItem (String s) { JMenuItem m = new JMenuItem (s); return m; } /** * @param s The list of component * @return A custom component */ private final JComboBox getComboBox (String [] s) { JComboBox c = new JComboBox (s); return c; } /** * @return A custom component */ private final JButton getButton () { JButton b = new JButton (""); return b; }

/** * @param Text of component * @return A custom component */ private final JTextField getField (String s) { JTextField b = new JTextField (""); b.setDragEnabled (true); return b; } /** * @param s The text of component * @return A custom component */ private final JCheckBox getCheckBox (String s) { JCheckBox c = new JCheckBox (s); return c; } //////////// /** Inner panel*/ private final class XPanel extends JPanel { /** Inner singleton constructor*/ private XPanel () { super (true); setBackground (Color.white); setPreferredSize (new Dimension (1024, 768)); addMouseListener (new MouseAdapter () { public void mouseClicked (MouseEvent evt) { xField.setText (Integer.toString (evt.getX ())); yField.setText (Integer.toString (evt.getY ())); return; } }); } /** @param g Main Graphics object*/ public void update (Graphics g) { paintComponent (g); } /** @param g Graphics object*/ protected void paintComponent (Graphics g) { super.paintComponent (g); g.setColor (Color.white); Dimension d = getSize (); g.fillRect (0, 0, d.width, d.height);

if (bimg != null) { g.drawImage (bimg, 0, 0, this); } } } ///////////// /** @param evt Action event*/ //Generate public void actionPerformed (ActionEvent evt) { Thread t = new Thread () { public void run () { try { if (generate ()); } catch (Exception e) { return; } } }; t.start (); } /** * @return true if is successful */ private final boolean generate () throws Exception { String text = textField.getText (); int banwidth = Integer.parseInt (wField.getText ()); int banheight = Integer.parseInt (hField.getText ()); int tx = Integer.parseInt (xField.getText ()); int ty = Integer.parseInt (yField.getText ()); String fname = (String)(fmBox.getSelectedItem ()); int style = stlBox.getSelectedIndex (); int size = Integer.parseInt ((String)(szBox.getSelectedItem ())); Font font = new Font (fname, style, size); Color cf = fontColor; BufferedImage bi = new BufferedImage (banwidth, banheight, 1); Graphics2D g2d = bi.createGraphics (); boolean render = isRenderCB.isSelected (); if (render) { g2d.setRenderingHint (RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint (RenderingHints.KEY_RENDERING,

RenderingHints.VALUE_RENDER_QUALITY); } g2d.setBackground (Color.white); g2d.clearRect (0, 0, banwidth, banheight); g2d.setColor (Color.black); g2d.drawRect (1, 1, banwidth-2, banheight-2); boolean gradient = selectedCB.isSelected (); String cyc = (String)cycleBox.getSelectedItem (); boolean cycle = cyc.equals ("true"); if (gradient) { GradientPaint GP = new GradientPaint ( Integer.parseInt (gradX_1_Field.getText Integer.parseInt (gradY_1_Field.getText gradColor_1_Button.getBackground (), Integer.parseInt (gradX_2_Field.getText Integer.parseInt (gradY_2_Field.getText gradColor_2_Button.getBackground (), cycle ); g2d.setPaint (GP); g2d.fillRect (0, 0, banwidth, banheight); }

()), ()), ()), ()),

AttributedString astr = new AttributedString (text); astr.addAttribute (TextAttribute.FONT, font); astr.addAttribute (TextAttribute.FOREGROUND, clButton.getBackground ()); AttributedCharacterIterator iter = astr.getIterator (); int start = iter.getBeginIndex (); int end = iter.getEndIndex (); FontRenderContext frc = g2d.getFontRenderContext (); LineBreakMeasurer ms = new LineBreakMeasurer (iter, frc); float wdf = (float)banwidth; float xf = (float)tx; float yf = (float)ty; ms.setPosition (start); while (ms.getPosition () < end) { TextLayout tl = ms.nextLayout (wdf); tl.draw (g2d, xf, yf); yf += tl.getAscent (); yf += (tl.getDescent ()+tl.getLeading ()); } if (bi != null) bimg = bi; g2d.dispose (); bot.repaint (); return true; } /** Reads Pad*/ private final void readPAD ()

{ try { if (xmlreader == null) { JOptionPane.showMessageDialog (mb, "Your System Has Not A Valid XMLParser!", "XML Error", JOptionPane.ERROR_MESSAGE); return; } int rep = jfc.showOpenDialog (mb); if (rep != JFileChooser.APPROVE_OPTION) return; File f = jfc.getSelectedFile (); if (f.isDirectory ()) return; String name = f.getName ().toLowerCase (); if (name.endsWith (".xml") == false) { JOptionPane.showMessageDialog (mb, f.getName ()+" has not xml ex tension!"); return; } for (int i=0; i<componentsLength; i++) { if (components [i] instanceof JTextComponent) ((JTextComponent)components [i]).setText (""); } InputStream fis = new FileInputStream (f); InputStream bis = new BufferedInputStream (fis); InputSource source = new InputSource (bis); xmlreader.parse (source); bis.close (); fis.close (); JOptionPane.showMessageDialog ( mb, ("Parsed: "+f.getName ()+" successfully!"), "Parsed", JOptionPane.INFORMATION_MESSAGE); return; } catch (Exception e) { e.printStackTrace (); } } /** Sets look and feel*/ private static final void setLF () { String jvers = System.getProperty ("java.version"); if (jvers.compareTo ("1.6") >= 0)

{ try { UIManager.setLookAndFeel ( "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); return; } catch (Exception e) {} } String osvers = System.getProperty ("os.name"); if (osvers.indexOf ("Windows") >= 0) { try { UIManager.setLookAndFeel ( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); return; } catch (Exception e) {} } } /** Shows screen*/ private static final void showScreen () { setLF (); // JFrame fr = new JFrame ("Text Banner Generator by Galih"); fr.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); fr.addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent evt) { visitus (); System.exit (0); } }); JComponent jc = new PictureGame (); jc.setOpaque (true); fr.setContentPane (jc); javax.swing.SwingUtilities.updateComponentTreeUI (stlBox); javax.swing.SwingUtilities.updateComponentTreeUI (jfc); fr.pack (); fr.setSize (640, 480); fr.setResizable (true); fr.setLocationRelativeTo (null); fr.setVisible (true); } /** * @param args Arguments list. * Main method is the first method sf thje applications. */

public static final void main (String [] args) { Runnable r = new Runnable () { public void run () { showScreen (); } }; javax.swing.SwingUtilities.invokeLater (r); } } /*********************/

You might also like