Przykładowe aplikacje wykorzystujące komponenty AWT i SWING import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; public class przyk { public Component createcomponents() { final JPanel plansza = new JPanel(); JPanel w1=new JPanel(); JPanel w2=new JPanel(); final JTextField textfield = new JTextField(12); final JLabel etykieta = new JLabel(); etykieta.settext("dane osobowe"); etykieta.setfont(new Font("Arial", Font.ITALIC+Font.BOLD, 20)); final JLabel nazwisko_ = new JLabel(); nazwisko_.settext("nazwisko: "); nazwisko_.setfont(new Font("Times New Roman", Font.BOLD, 12));
final JTextField nazwisko = new JTextField(12); plansza.setborder(borderfactory.createemptyborder(10,30,10,30)); w1.setlayout(new BoxLayout(w1, BoxLayout.X_AXIS)); w2.setlayout(new BoxLayout(w2, BoxLayout.X_AXIS)); w1.add(etykieta); w2.add(nazwisko_); w2.add(nazwisko); plansza.add(w1); plansza.add(w2); plansza.setlayout(new BoxLayout(plansza, BoxLayout.Y_AXIS)); return plansza; public static void main(string[] args) { JFrame ramka = new JFrame("Aplikacja ZADANIE"); przyk aplikacja = new przyk(); Component zawartosc = aplikacja.createcomponents(); ramka.getcontentpane().add( zawartosc, BorderLayout.CENTER); //konczy elegancko pracę z aplikacjš ramka.addwindowlistener(new WindowAdapter()
{ public void windowclosing(windowevent e) { System.exit(0); ); ramka.pack(); ramka.setvisible(true); Kod aplikacji do obsługi tablic (w przykładzie tablica 3*3) wykorzystujšcej układacz GridLayout. import javax.swing.*; import java.awt.*; import java.awt.event.*;
import java.io.*; public class przyk { String [][] a={ {"Adam", "Ania", "Asia", {"Siedlce","Warszawa", "Szczecin", {"1000","3000","3500"; public Component createcomponents() { JPanel p2 = new JPanel ( ); p2.setbackground ( Color.red ); p2.setlayout ( new GridLayout ( 3, 3, 10, 10) ); p2.add ( new Button ( a[0][0] ) ); p2.add ( new Button ( a[0][1] ) ); p2.add ( new Button ( a[0][2] ) ); p2.add ( new Button ( a[1][0] ) ); p2.add ( new Button ( a[1][1] ) ); p2.add ( new Button ( a[1][2] ) ); p2.add ( new Button ( a[2][0] ) ); p2.add ( new Button ( a[2][1] ) ); p2.add ( new Button ( a[2][2] ) ); return p2;
public static void main(string[] args) { JFrame ramka = new JFrame("Aplikacja ZADANIE"); przyk aplikacja = new przyk(); Component zawartosc = aplikacja.createcomponents(); ramka.getcontentpane().add( zawartosc, BorderLayout.CENTER); //konczy elegancko pracę z aplikacjš ramka.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); ramka.pack(); ramka.setvisible(true); Formularz do wprowadzania danych. Formularz pokazany jest na rysunku (W formie aplikacji Java)
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class zadanie
{ public Component createcomponents() { final JPanel plansza = new JPanel(); JPanel w1=new JPanel(); JPanel w2=new JPanel(); JPanel w3=new JPanel(); JPanel w4=new JPanel(); JPanel w5=new JPanel(); JPanel w6=new JPanel(); JPanel w6i=new JPanel(); JPanel w6ii=new JPanel(); JPanel w7=new JPanel(); JPanel w7i=new JPanel(); JPanel w7ii=new JPanel(); JPanel w76=new JPanel(); JButton klawisz = new JButton("Zapisz dane!!!!"); JPanel wa=new JPanel(); final JTextField textfield = new JTextField(12);
final JLabel etykieta = new JLabel(); etykieta.settext("dane osobowe"); etykieta.setfont(new Font("Arial", Font.ITALIC+Font.BOLD, 20)); final JLabel nazwisko_ = new JLabel(); nazwisko_.settext("nazwisko: "); nazwisko_.setfont(new Font("Times New Roman", Font.BOLD, 12)); final JTextField nazwisko = new JTextField(12); final JLabel imie_ = new JLabel(); imie_.settext("imię: "); imie_.setfont(new Font("Times New Roman", Font.BOLD, 12)); final JTextField imie = new JTextField(12); final JLabel adres_ = new JLabel(); adres_.settext("adres: "); adres_.setfont(new Font("Times New Roman", Font.BOLD, 12));
final JTextField adres = new JTextField(12); final JLabel wyplata_ = new JLabel(); wyplata_.settext("do wypłaty:"); wyplata_.setfont(new Font("Times New Roman", Font.BOLD, 12)); final JTextField wyplata = new JTextField(12); final JLabel zaint_ = new JLabel(); zaint_.settext("do wypłaty:"); zaint_.setfont(new Font("Times New Roman", Font.BOLD, 12)); JCheckBox zaint1=new JCheckBox("Polityka");; JCheckBox zaint2=new JCheckBox("Nauka");; JCheckBox zaint3=new JCheckBox("Film");; JCheckBox zaint4=new JCheckBox("Teatr");; JCheckBox zaint5=new JCheckBox("Literatura");; final JLabel pali_ = new JLabel(); pali_.settext("pali?:"); pali_.setfont(new Font("Times New Roman", Font.BOLD, 12));
JRadioButton pali1=new JRadioButton("Palšcy"); JRadioButton pali2=new JRadioButton("Nie Palšcy"); final JTextArea opis = new JTextArea(" "); opis.setfont(new Font("Serif", Font.BOLD, 16)); opis.setlinewrap(true); opis.setwrapstyleword(true); JScrollPane areascrollpane = new JScrollPane(opis); areascrollpane.setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_always); areascrollpane.setpreferredsize(new Dimension(100, 200)); klawisz.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { klikania."); JOptionPane.showMessageDialog(plansza,"Pozdrowienie podczas );
plansza.setborder(borderfactory.createemptyborder(10,30,10,30)); w1.setlayout(new BoxLayout(w1, BoxLayout.X_AXIS)); w2.setlayout(new BoxLayout(w2, BoxLayout.X_AXIS)); w3.setlayout(new BoxLayout(w3, BoxLayout.X_AXIS)); w4.setlayout(new BoxLayout(w4, BoxLayout.X_AXIS)); w5.setlayout(new BoxLayout(w5, BoxLayout.X_AXIS)); w6.setlayout(new BoxLayout(w6, BoxLayout.X_AXIS)); w6i.setlayout(new BoxLayout(w6I, BoxLayout.X_AXIS)); w6ii.setlayout(new BoxLayout(w6II, BoxLayout.Y_AXIS)); w7.setlayout(new BoxLayout(w7, BoxLayout.X_AXIS)); w7i.setlayout(new BoxLayout(w7I, BoxLayout.X_AXIS)); w7ii.setlayout(new BoxLayout(w7II, BoxLayout.Y_AXIS)); w76.setlayout(new BoxLayout(w76, BoxLayout.X_AXIS)); plansza.setlayout(new BoxLayout(plansza, BoxLayout.Y_AXIS)); w1.add(etykieta); w2.add(nazwisko_); w2.add(nazwisko); w3.add(imie_); w3.add(imie); w4.add(adres_);
w4.add(adres); w5.add(wyplata_); w5.add(wyplata); w6i.add(zaint_); w6ii.add(zaint1); w6ii.add(zaint2); w6ii.add(zaint3); w6ii.add(zaint4); w6ii.add(zaint5); w6.add(w6i); w6.add(w6ii); w7i.add(pali_); w7ii.add(pali1); w7ii.add(pali2); w7.add(w7i); w7.add(w7ii); w76.add(w6); w76.add(w7); plansza.add(w1); plansza.add(w2);
plansza.add(w3); plansza.add(w4); plansza.add(w5); plansza.add(w76); plansza.add(areascrollpane); plansza.add(klawisz); return plansza; public static void main(string[] args) { JFrame ramka = new JFrame("Aplikacja ZADANIE"); zadanie aplikacja = new zadanie(); Component zawartosvcv = aplikacja.createcomponents(); ramka.getcontentpane().add( zawartosvcv, BorderLayout.CENTER); ramka.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0);
); ramka.pack(); ramka.setvisible(true); import javax.swing.*; //This is the final package name. //import com.sun.java.swing.*; //Used by JDK 1.2 Beta 4 and all //Swing releases before Swing 1.1 Beta 3. import java.awt.*; import java.awt.event.*; public class s1p{ /* stałe i zmienne uczestniczšce w wywietlaniu */ private static String etykietaprefix = "Liczba kliknięć klawisza: "; private int liczbakliknieqcv = 0; public Component createcomponents() { /* elementy pokazywane na ekranie plansza, a na niej klawisz, a pod nim etykieta */
final JLabel etykieta = new JLabel(etykietaPrefix + "0 "); JButton klawisz = new JButton("Jam jest Swingowy klawisz!"); // JLabel, JButton to "terminalne" komponenty GUI, inne to: JList, JComboBox, JTextField, JMenu, JCheckboxMenuItem, JRadioButtonMenuItem, JAbstractButton, JMenuBar, JPopupMenu, JSeparator, JSlider, JPasswordField, JColorChooser, JFileChooser, JTable, JText, JTree JPanel plansza = new JPanel(); // JPanel - komponent poziomu poredniego GUI, inne to JScrollPane, JTabbedPane, JSplitPane, JToolBar, JInternalFrame, JLayeredPane, JDesktopPane, JProgressBar, /* działanie elementów aktywnych - reakcje na zdarzenia */ // Alt-I będzie równoznaczne z kliknięciem klawisza klawisz.setmnemonic(keyevent.vk_i); // reakcja klawisza na kliknięcie myszy /* klawisz.addactionlistener(new ActionListener() { ); public void actionperformed(actionevent e) { liczbakliknieqcv++; etykieta.settext(etykietaprefix + liczbakliknieqcv); Inni podsłuchiwacze zdarzeń to: Act that results in the event Listener type User clicks a button, presses Return while typing in a text field, or chooses a menu item
ActionListener User closes a frame (main window) WindowListener User presses a mouse button while the cursor is over a component MouseListener User moves the mouse over a component Component becomes visible Component gets the keyboard focus MouseMotionListener ComponentListener FocusListener Table or list selection changes ListSelectionListener Elementy potrzebne dla podsłuchiwacza podłuchiwacza Deklaracja public class MyClass implements ActionListener { Rejestracja : somecomponent.addactionlistener(instanceofmyclass); Implementacja metody w interfejsie podsłuchiwacza public void actionperformed(actionevent e) {...//code that reacts to the action...
*/ // objanienie klawisza przy najechaniu nań - niepotrzebne klawisz.settooltiptext("kliknięcie tego klawisza jest zliczne poniżej."); // a teraz instrukcja niepotrzebna sama w sobie, ale wspierajšca oprogramoweanie dla niepełnosprawnych (zamina tekstu na dżwięki, głos) // mówi, że etykieta opisuje istotę działania komponentu, jakim jest klawisz. etykieta.setlabelfor(klawisz); // brzeg dla planszy plansza.setborder(borderfactory.createemptyborder( 30, //top 30, //left 10, //bottom 30) //right ); /* ułożenie elementów na planszy */ plansza.setlayout(new GridLayout(0, 1)); /* jeden pod drugim */ // możliwe Layouty to: BorderLayout, BoxLayout, FlowLayout, GridBagLayout, GridLayout plansza.add(klawisz);
plansza.add(etykieta); return plansza; public static void main(string[] args) { // główny program // wyglšd ekranu try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch (Exception e) { //główne okno JFrame ramka = new JFrame("Aplikacja swingowa"); // JFrame - komponent szczytowy GUI - inne to JDialog, JApplet // dodaj zawartoć wygenerowanš przez ten program s1p aplikacja = new s1p(); Component zawartosvcv = aplikacja.createcomponents(); ramka.getcontentpane().add( zawartosvcv, BorderLayout.CENTER); //Zakończenie kreowania ramki i pokazanie jej
// reakcja ramki na nacinięcie krzyżyka ramka.addwindowlistener(new WindowAdapter() { ); public void windowclosing(windowevent e) { System.exit(0); ramka.pack(); // pokazanie ramki ramka.setvisible(true); import javax.swing.*; //This is the final package name. //import com.sun.java.swing.*; //Used by JDK 1.2 Beta 4 and all //Swing releases before Swing 1.1 Beta 3. import java.awt.*; import java.awt.event.*; import javax.swing.table.* ;
public class s12p_table{ public Component createcomponents() { /* elementy pokazywane na ekranie plansza, a na niej tablica */ MojModelTablicy mojmodel = new MojModelTablicy (); JTable tablica = new JTable(mojModel); tablica.setpreferredscrollableviewportsize( new Dimension(500, 70)); //Create the scroll pane and add the table to it. JScrollPane skrolowanaplansza = new JScrollPane(tablica); JPanel plansza = new JPanel(); // brzeg dla planszy plansza.setborder(borderfactory.createemptyborder( 30, //top
30, //left 10, //bottom 30) //right ); /* ułożenie elementów na planszy */ plansza.setlayout(new GridLayout(0, 1)); /* jeden pod drugim */ // możliwe Layouty to: BorderLayout, BoxLayout, FlowLayout, GridBagLayout, GridLayout plansza.add(skrolowanaplansza); return plansza; // klasy pomocnicze class MojModelTablicy extends AbstractTableModel { /* Tablica z danymi */ final Object[][] zawartosctablicy = { {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false), {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true), {"Kathy", "Walrath",
"Chasing toddlers", new Integer(2), new Boolean(false), {"Mark", "Andrews", "Speed reading", new Integer(20), new Boolean(true), {"Angela", "Lih", "Teaching high school", new Integer(4), new Boolean(false) ; final String[] nazwykolumn= {"Imię", "Nazwisko", "Sport", "Wiek", "Normalnoć"; public int getcolumncount() { return nazwykolumn.length; public int getrowcount() { return zawartosctablicy.length;
public String getcolumnname(int col) { return nazwykolumn[col]; public Object getvalueat(int row, int col) { return zawartosctablicy[row][col]; public Class getcolumnclass(int c) { return getvalueat(0, c).getclass(); /* * Don't need to implement this method unless your table's * editable. */ public boolean iscelleditable(int row, int col) { //Note that the data/cell address is constant, //no matter where the cell appears onscreen. if (col < 2) {
return false; else { return true; /* * Don't need to implement this method unless your table's * data can change. */ public void setvalueat(object value, int row, int col) { //debugging code - np. pokazanie starej zawartoœci tablicy na stdout //ugly special handling of Integers - dla Java 1.1 i 1.2,- dla Java1.3 niepotrzebne zawartosctablicy[row][col] = value; firetablecellupdated(row, col); //debugging code - np. pokazywanie nowej zawartoci na stdout // koniec klas pomocniczych public static void main(string[] args)
{ // główny program // wyglšd ekranu try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch (Exception e) { //główne okno JFrame ramka = new JFrame("Aplikacja swingowa"); // JFrame - komponent szczytowy GUI - inne to JDialog, JApplet // dodaj zawartoć wygenerowanš przez ten program s12p_table aplikacja = new s12p_table(); Component zawartosvcv = aplikacja.createcomponents(); ramka.getcontentpane().add( zawartosvcv, BorderLayout.CENTER); //Zakończenie kreowania ramki i pokazanie jej // reakcja ramki na nacinięcie krzyżyka ramka.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0);
); ramka.pack(); // pokazanie ramki ramka.setvisible(true); javax.swing.*; //This is the final package name. import //import com.sun.java.swing.*; //Used by JDK 1.2 Beta 4 and all //Swing releases before Swing 1.1 Beta 3. import java.awt.*; import java.io.*; import java.awt.event.*; public class s13p_pliki{ /* stałe i zmienne uczestniczšce w wywietlaniu */ private int liczbakliknieqcv = 0;
public Component createcomponents() { /* elementy pokazywane na ekranie */ plansza, a na niej klawisz, a pod nim etykieta final JLabel etykieta = new JLabel("Nie otworzono jeszcze pliku " + "0 "); JButton klawisz = new JButton("Kliknij, by otworzyć jaki wybrany plik!"); final JFileChooser wybovrpliku = new JFileChooser(); // JLabel, JButton to "terminalne" komponenty GUI, inne to: JList, JComboBox, JTextField, JMenu, JCheckboxMenuItem, JRadioButtonMenuItem, JAbstractButton, JMenuBar, JPopupMenu, JSeparator, JSlider, JPasswordField, JColorChooser, JFileChooser, JTable, JText, JTree final JPanel plansza = new JPanel(); // JPanel - komponent poziomu poœredniego GUI, inne to JScrollPane, JTabbedPane, JSplitPane, JToolBar, JInternalFrame, JLayeredPane, JDesktopPane, JProgressBar, /* działanie elementów aktywnych - reakcje na zdarzenia */ // Alt-I będzie równoznaczne z kliknięciem klawisza klawisz.setmnemonic(keyevent.vk_i); // reakcja klawisza na kliknięcie myszy klawisz.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { liczbakliknieqcv++;
int returnval = wybovrpliku.showopendialog(plansza); if (returnval == JFileChooser.APPROVE_OPTION) { File plik = wybovrpliku.getselectedfile(); //this is where a real application would open the file. etykieta.settext("otwieram: " + plik.getname() + ";"+plik.getabsolutepath() ); else { etykieta.settext("użytkownik nie chce otwierać - klik"+liczbakliknieqcv ); ); // objanienie klawisza przy najechaniu nań - niepotrzebne klawisz.settooltiptext("kliknięcie tego klawisza jest zliczne poniżej."); // a teraz instrukcja niepotrzebna sama w sobie, ale wspierajšca oprogramoweanie dla niepełnosprawnych (zamina tekstu na dżwięki, głos) // mówi, że etykieta opisuje istotę działania komponentu, jakim jest klawisz. etykieta.setlabelfor(klawisz); // brzeg dla planszy plansza.setborder(borderfactory.createemptyborder(
30, //top 30, //left 10, //bottom 30) //right ); /* ułożenie elementów na planszy */ plansza.setlayout(new GridLayout(0, 1)); /* jeden pod drugim */ // możliwe Layouty to: BorderLayout, BoxLayout, FlowLayout, GridBagLayout, GridLayout plansza.add(klawisz); plansza.add(etykieta); return plansza; public static void main(string[] args) { // główny program // wyglšd ekranu try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch (Exception e) {
//główne okno JFrame ramka = new JFrame("Aplikacja swingowa"); // JFrame - komponent szczytowy GUI - inne to JDialog, JApplet // dodaj zawartoć wygenerowanš przez ten program s13p_pliki aplikacja = new s13p_pliki(); Component zawartosvcv = aplikacja.createcomponents(); ramka.getcontentpane().add( zawartosvcv, BorderLayout.CENTER); //Zakończenie kreowania ramki i pokazanie jej // reakcja ramki na nacinięcie krzyżyka ramka.addwindowlistener(new WindowAdapter() { ); public void windowclosing(windowevent e) { System.exit(0); ramka.pack(); // pokazanie ramki ramka.setvisible(true);
import javax.swing.*; //This is the final package name. //import com.sun.java.swing.*; //Used by JDK 1.2 Beta 4 and all //Swing releases before Swing 1.1 Beta 3. import java.awt.*; import java.awt.event.*; import javax.swing.event.*;
public class s14p_kolory{ /* stałe i zmienne uczestniczšce w wywietlaniu */ public Component createcomponents() { /* elementy pokazywane na ekranie plansza, a na niej kolory, a nad tym etykieta */ final JLabel etykieta = new JLabel("Dobieranie kolorów "); etykieta.setforeground(color.yellow); final JColorChooser wybovrkoloru = new JColorChooser(etykieta.getForeground()); // JLabel, JButton to "terminalne" komponenty GUI, inne to: JList, JComboBox, JTextField, JMenu, JCheckboxMenuItem, JRadioButtonMenuItem, JAbstractButton, JMenuBar, JPopupMenu, JSeparator, JSlider, JPasswordField, JColorChooser, JFileChooser, JTable, JText, JTree final JPanel plansza = new JPanel(); // JPanel - komponent poziomu poredniego GUI, inne to JScrollPane, JTabbedPane, JSplitPane, JToolBar, JInternalFrame, JLayeredPane, JDesktopPane, JProgressBar, /* działanie elementów aktywnych - reakcje na zdarzenia */ wybovrkoloru.getselectionmodel().addchangelistener(
new ChangeListener() { public void statechanged(changeevent e) { Color newcolor = wybovrkoloru.getcolor(); etykieta.setforeground(newcolor); ); // brzeg dla planszy plansza.setborder(borderfactory.createemptyborder( 30, //top 30, //left 10, //bottom 30) //right ); /* ułożenie elementów na planszy */ plansza.setlayout(new BoxLayout(plansza, BoxLayout.Y_AXIS)); // możliwe Layouty to: BorderLayout, BoxLayout, FlowLayout, GridBagLayout, GridLayout
plansza.add(etykieta); plansza.add(wybovrkoloru, BorderLayout.CENTER); return plansza; public static void main(string[] args) { // główny program // wyglšd ekranu try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch (Exception e) { //główne okno JFrame ramka = new JFrame("Aplikacja swingowa"); // JFrame - komponent szczytowy GUI - inne to JDialog, JApplet // dodaj zawartoć wygenerowanš przez ten program s14p_kolory aplikacja = new s14p_kolory(); Component zawartosvcv = aplikacja.createcomponents(); ramka.getcontentpane().add( zawartosvcv, BorderLayout.CENTER);
//Zakończenie kreowania ramki i pokazanie jej // reakcja ramki na nacinięcie krzyżyka ramka.addwindowlistener(new WindowAdapter() { ); public void windowclosing(windowevent e) { System.exit(0); ramka.pack(); // pokazanie ramki ramka.setvisible(true);
/* * 1.2 version. */ import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*;
/* * This is like the FontDemo applet in volume 1, except that it * uses the Java 2D APIs to define and render the graphics and text. */ public class s21p_ksztalty extends Component { final static int maxcharheight = 15; final static int minfontsize = 6; final static Color bg = Color.white; final static Color fg = Color.black; final static Color red = Color.red; final static Color white = Color.white; final static BasicStroke stroke = new BasicStroke(2.0f); final static BasicStroke widestroke = new BasicStroke(8.0f); final static float dash1[] = {10.0f; final static BasicStroke dashed = new BasicStroke(1.0f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f); Dimension totalsize; FontMetrics fontmetrics; public void init() { //Initialize drawing colors setbackground(bg); setforeground(fg); FontMetrics pickfont(graphics2d g2, String longstring, int xspace) { boolean fontfits = false; Font font = g2.getfont(); FontMetrics fontmetrics = g2.getfontmetrics(); int size = font.getsize(); String name = font.getname(); int style = font.getstyle();
while (!fontfits ) { if ( (fontmetrics.getheight() <= maxcharheight) && (fontmetrics.stringwidth(longstring) <= xspace) ) { fontfits = true; else { if ( size <= minfontsize ) { fontfits = true; else { g2.setfont(font = new Font(name, style, --size)); fontmetrics = g2.getfontmetrics(); return fontmetrics;
public void paint(graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setrenderinghint(renderinghints.key_antialiasing, RenderingHints.VALUE_ANTIALIAS_ON); Dimension d = getsize(); int gridwidth = d.width / 6; int gridheight = d.height / 2; fontmetrics = pickfont(g2, "Filled and Stroked GeneralPath", gridwidth); Color fg3d = Color.lightGray; g2.setpaint(fg3d); g2.draw3drect(0, 0, d.width - 1, d.height - 1, true); g2.draw3drect(3, 3, d.width - 7, d.height - 7, false); g2.setpaint(fg); int x = 5;
int y = 7; int rectwidth = gridwidth - 2*x; int stringy = gridheight - 3 - fontmetrics.getdescent(); int rectheight = stringy - fontmetrics.getmaxascent() - y - 2; // draw Line2D.Double g2.draw(new Line2D.Double(x, y+rectheight-1, x + rectwidth, y)); g2.drawstring("line2d", x, stringy); x += gridwidth; // draw Rectangle2D.Double g2.setstroke(stroke); g2.draw(new Rectangle2D.Double(x, y, rectwidth, rectheight)); g2.drawstring("rectangle2d", x, stringy); x += gridwidth; // draw RoundRectangle2D.Double g2.setstroke(dashed); g2.draw(new RoundRectangle2D.Double(x, y, rectwidth, rectheight, 10, 10)); g2.drawstring("roundrectangle2d", x, stringy);
x += gridwidth; // draw Arc2D.Double g2.setstroke(widestroke); g2.draw(new Arc2D.Double(x, y, rectwidth, rectheight, 90, 135, Arc2D.OPEN)); g2.drawstring("arc2d", x, stringy); x += gridwidth; // draw Ellipse2D.Double g2.setstroke(stroke); g2.draw(new Ellipse2D.Double(x, y, rectwidth, rectheight)); g2.drawstring("ellipse2d", x, stringy); x += gridwidth; // draw GeneralPath (polygon) int x1points[] = {x, x+rectwidth, x, x+rectwidth; int y1points[] = {y, y+rectheight, y+rectheight, y; GeneralPath polygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD, x1points.length); polygon.moveto(x1points[0], y1points[0]);
for ( int index = 1; index < x1points.length; index++ ) { polygon.lineto(x1points[index], y1points[index]); ; polygon.closepath(); g2.draw(polygon); g2.drawstring("generalpath", x, stringy); // NEW ROW x = 5; y += gridheight; stringy += gridheight; // draw GeneralPath (polyline) int x2points[] = {x, x+rectwidth, x, x+rectwidth; int y2points[] = {y, y+rectheight, y+rectheight, y; GeneralPath polyline = new GeneralPath(GeneralPath.WIND_EVEN_ODD, x2points.length); polyline.moveto (x2points[0], y2points[0]); for ( int index = 1; index < x2points.length; index++ ) {
polyline.lineto(x2points[index], y2points[index]); ; g2.draw(polyline); g2.drawstring("generalpath (open)", x, stringy); x += gridwidth; // fill Rectangle2D.Double (red) g2.setpaint(red); g2.fill(new Rectangle2D.Double(x, y, rectwidth, rectheight)); g2.setpaint(fg); g2.drawstring("filled Rectangle2D", x, stringy); x += gridwidth; // fill RoundRectangle2D.Double GradientPaint redtowhite = new GradientPaint(x,y,red,x+rectWidth, y,white); g2.setpaint(redtowhite); g2.fill(new RoundRectangle2D.Double(x, y, rectwidth, rectheight, 10, 10)); g2.setpaint(fg); g2.drawstring("filled RoundRectangle2D", x, stringy);
x += gridwidth; // fill Arc2D g2.setpaint(red); g2.fill(new Arc2D.Double(x, y, rectwidth, rectheight, 90, 135, Arc2D.OPEN)); g2.setpaint(fg); g2.drawstring("filled Arc2D", x, stringy); x += gridwidth; // fill Ellipse2D.Double redtowhite = new GradientPaint(x,y,red,x+rectWidth, y,white); g2.setpaint(redtowhite); g2.fill (new Ellipse2D.Double(x, y, rectwidth, rectheight)); g2.setpaint(fg); g2.drawstring("filled Ellipse2D", x, stringy); x += gridwidth; // fill and stroke GeneralPath
int x3points[] = {x, x+rectwidth, x, x+rectwidth; int y3points[] = {y, y+rectheight, y+rectheight, y; GeneralPath filledpolygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD, x3points.length); filledpolygon.moveto(x3points[0], y3points[0]); for ( int index = 1; index < x3points.length; index++ ) { filledpolygon.lineto(x3points[index], y3points[index]); ; filledpolygon.closepath(); g2.setpaint(red); g2.fill(filledpolygon); g2.setpaint(fg); g2.draw(filledpolygon); g2.drawstring("filled and Stroked GeneralPath", x, stringy); /* public static void main(string s[]) { JFrame f = new JFrame("s21p_ksztalty"); f.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) {System.exit(0); );
JApplet applet = new s21p_ksztalty(); f.getcontentpane().add("center", applet); applet.init(); f.pack(); f.setsize(new Dimension(550,100)); f.show(); */ public static void main(string[] args) { // główny program // wyglšd ekranu try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch (Exception e) { //główne okno Component komponent = new s21p_ksztalty(); JFrame ramka = new JFrame("Aplikacja swingowa "+komponent.getclass().getname() ); // JFrame - komponent szczytowy GUI - inne to JDialog, JApplet // dodaj zawartoć wygenerowanš przez ten program
// Component zawartosvcv = aplikacja.createcomponents(); ramka.getcontentpane().add( komponent, BorderLayout.CENTER); //Zakończenie kreowania ramki i pokazanie jej // reakcja ramki na nacinięcie krzyżyka ramka.addwindowlistener(new WindowAdapter() { ); public void windowclosing(windowevent e) { System.exit(0); ramka.pack(); // pokazanie ramki ramka.setsize(new Dimension(550,100)); ramka.setvisible(true); // koniec klasy