package jbPack; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.text.*; import java.awt.geom.*; import java.awt.image.*; import java.awt.font.*; import java.net.*; import java.util.zip.*; import java.lang.reflect.*; import java.applet.*; import javax.swing.event.*; import javax.swing.border.*; import javax.swing.tree.*; import java.beans.*; public class Program extends JFrame { private static final String caption = "Swing Application"; // tytuł public static final int width = 400, height = 400; // rozmiary public static final Point location = new Point(150, 150); // położenie private String lookAndFeel = // wygląd UIManager.getSystemLookAndFeelClassName(); private Object paintLock = new Object(); private boolean isScreenVisible; private ContentPane contentPane; public static void main(String[] args) { new Program(); } public Program() { // określenie napisu na pasku tytułowym setTitle(caption); // uniemożliwienie zmiany rozmiarów okna setResizable(false); // określenie wyglądu aplikacji try { UIManager.setLookAndFeel(lookAndFeel); } catch(Exception e) { } // utworzenie odnośnika do pulpitu contentPane = new ContentPane(); // wymiana domyślnego pulpitu na własny setContentPane(contentPane); // określenie położenia okna setLocation(location); // określenie rozmiarów pulpitu JComponent jContent = (JComponent)contentPane; String system = System.getProperty("os.name"); int delta = system.indexOf("98") > -1 || system.indexOf("95") > -1 ? 0 : 2; jContent.setPreferredSize( new Dimension(width-delta, height-delta) ); // określenie koloru tła okna i pulpitu setBackground(Color.white); contentPane.setBackground(Color.white); // obsługa zamknięcia okna addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } } ); // upakowanie okna pack(); // zrealizowanie Naczelnej Zasady SwingUtilities.invokeLater( new Runnable() { public void run() { // wykonanie czynności inicjujących contentPane.initPane(); // wyświetlenie okna i pulpitu show(); } } ); synchronized(paintLock) { while(!isScreenVisible) try { paintLock.wait(); } catch(InterruptedException e) {} } // zrealizowanie Naczelnej Zasady SwingUtilities.invokeLater( new Runnable() { public void run() { // nastawienie celownika na pulpit contentPane.requestFocus(); // nastawienie celownika na komponent // albo m.in. wykonanie dispose(); contentPane.initFocus(); } } ); } // klasa pomocnicza class Content extends JPanel { void initPane() {} void initFocus() {} public void paintComponent(Graphics gDC) { super.paintComponent(gDC); synchronized(paintLock) { isScreenVisible = true; paintLock.notify(); } } } // ====== pod-aplikacja ================================= // public class ContentPane extends Content { Vector vec; public void initPane() { vec = new Vector(); String linia = ""; try{ FileReader fr = new FileReader("d:\\plik_testowy.txt"); BufferedReader bfr = new BufferedReader(fr); while((linia = bfr.readLine()) != null){ vec.add(linia); } } catch( IOException ex ){ System.out.println("Błąd przy operacji na pliku: "+ex); } } public void paintComponent(Graphics gDC) { int x; int y; int r; StringTokenizer st; super.paintComponent(gDC); for(int i = 0; i< vec.size(); i++){ st = new StringTokenizer((String)vec.get(i)); x = Integer.parseInt(st.nextToken()); y = Integer.parseInt(st.nextToken()); r = Integer.parseInt(st.nextToken()); gDC.drawOval( x, y, r, r); } } } // ====================================================== // }