Pages

Minggu, 04 Desember 2011

Kajian 3 - Box Layout

Layout manager yang telah kita bahas sebelumnya merupakan bagian dari package java.awt. Javax.swing memiliki beberapa tambahan layout manager lagi, salah satunya adalah: BoxLayout. Layout manager ini sangat berguna untuk membuat toolbars sederhana atau vertical button bars.Cara kerjanya sangat sederhana yaitu menempatkan komponen dalam satu baris atau satu kolom.

Berikut contoh sintaknya :

  import java.awt.*;
   import java.awt.event.*;
   import javax.swing.*;
    public class Boxer extends JFrame {
       public Boxer(){
         createUserInterface();
      }
       private void createUserInterface(){
         Container box = Box.createHorizontalBox(  );
         box.add(Box.createHorizontalGlue(  ));
         box.add(new JButton("In the"));
         box.add(Box.createHorizontalGlue(  ));
         box.add(new JButton("clearing"));
         box.add(Box.createHorizontalStrut(10));
         box.add(new JButton("stands"));
         box.add(Box.createHorizontalStrut(10));
         box.add(new JButton("a"));
         box.add(Box.createHorizontalGlue(  ));
         box.add(new JButton("boxer"));
         box.add(Box.createHorizontalGlue(  ));
  
         this.add(box);
         this.setTitle("Boxer");
         this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
         this.setSize(250, 250);
         this.setLocation(200, 200);
         this.pack(  );
         this.setVisible(true);
      }
   public static void main(String[] args) {
         Boxer app = new Boxer();
      }
   }

Kajian 3 - Flow LAyout

Flow layout merupakan manajer layout yang paling sederhana. Layout ini menyusun komponen berdasarkan ukuran default masing-masing, dengan posisi mulai dari kiri ke kanan dan dari atas kebawahdi dalam container yang digunakan.

Berikut contoh sintaknya :

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Flow extends JFrame {
  public Flow(  ) {
    createUserInterface();
  }
   private void createUserInterface(){
    // FlowLayout adalah layout manager default untuk JPanel
    JPanel panel1 = new JPanel();
    panel1.setLayout(new FlowLayout()); // baris ini dapat dihapus
    panel1.add(new JButton("One"));
    panel1.add(new JButton("Two"));
    panel1.add(new JButton("Three"));
    panel1.add(new JButton("Four"));
    panel1.add(new JButton("Five"));   
    this.add(panel1);
    this.setTitle("Flow");
    this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    this.setSize(400, 75);
    this.setLocation(200, 200);
    this.setVisible(true);
  }
   public static void main(String[] args) {
   Flow app = new Flow();
  }
}

Kajian 3 - Card Layout

CardLayout merupakan layout manager yang mampu menciptakan efek “tumpukan” komponen. Artinya, layout ini tidak memposisikan komponen di lokasi-lokasi tertentu di dalam kontainer, melainkan nampilkannya satu demi satu.

berikut contoh sintaknya :


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Card extends JPanel {
    CardLayout cards = new CardLayout(  );
      public Card(  ) {
        setLayout(cards);

        ActionListener listener = new ActionListener(  ) {
            public void actionPerformed(ActionEvent e) {
                cards.next(Card.this);
            }
        };
       JButton button;
        button = new JButton("one");
        button.addActionListener(listener);
        add(button, "one");
        button = new JButton("two");
        button.addActionListener(listener);
        add(button, "two");
        button = new JButton("three");
        button.addActionListener(listener);
        add(button, "three");
    }
      public static void main(String[] args) {
        JFrame frame = new JFrame("Card");
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.setSize(200, 200);
        frame.setLocation(200, 200);
        frame.setContentPane(new Card(  ));
        frame.setVisible(true);
    }
}

KAjian 3 - Border Layout

BorderLayout merupakan manajer layout default untuk setiap panel konten. Jendela isi adalah wadah utama dalam semua frame, applet, dan dialog. Sebuah BorderLayout memiliki lima area yang tersedia untuk menahan komponen: utara, selatan, timur, barat, dan pusat. Semua ruang ekstra ditempatkan di daerah pusat. Secara opsional, kita dapat juga memberikan padding diantara komponen. Border layout merupakan layout default untuk JWindows dan JFrame.

berikut contoh sintaknya :

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
    public class BorderLayoutApp2 extends JFrame {
       public BorderLayoutApp2(  ) {
         createUserInterface();
     }    
       private void createUserInterface(){
         this.setTitle("Border2");
         this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
         this.setSize(225, 150);
         this.setLocation(200, 200);
         this.setVisible(true);
         this.setLayout(new BorderLayout(  ));
        JPanel p = new JPanel(  );
         p.add(new JButton("North"));
         this.add(p, BorderLayout.NORTH);
           p = new JPanel(  );
         p.add(new JButton("South"));
         this.add(p, BorderLayout.SOUTH);
        
         p = new JPanel(  );
         p.add(new JButton("East"));
         this.add(p, BorderLayout.EAST);
        
         p = new JPanel(  );
         p.add(new JButton("West"));
         this.add(p, BorderLayout.WEST);
        
         p = new JPanel(  );
         p.add(new JButton("Center"));
         this.add(p, BorderLayout.CENTER);
      }

       public static void main(String[] args) {
         BorderLayoutApp2 app = new BorderLayoutApp2();
      }
    }

Kajian 4 - Mouse Even Handling

import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
   
    public class MouseEventHadling extends JFrame
        implements MouseListener, MouseMotionListener {
   
        private JLabel statusBar;
   
        public MouseEventHadling () {
            super ("Mencoba Beberapa Mouse Event Handling");
   
            statusBar = new JLabel();
            getContentPane().add(statusBar,BorderLayout.SOUTH);
   
            addMouseListener (this);
            addMouseMotionListener (this);
   
            setSize (300,100);
        setLocationRelativeTo(null);
            setVisible(true);
        }
        //MouseListener event handler
        public void mouseClicked (MouseEvent e) {
            statusBar.setText("Clicked at ["+ e.getX() + "," + e.getY() + "]");
        }
   
        public void mousePressed (MouseEvent e) {
            statusBar.setText("Pressed at ["+ e.getX() + "," + e.getY() + "]");
        }

        public void mouseReleased (MouseEvent e) {
            statusBar.setText("Released at ["+ e.getX() + "," + e.getY() + "]");
        }
   
        public void mouseEntered (MouseEvent e) {
            statusBar.setText("Entered at ["+ e.getX() + "," + e.getY() + "]");
            getContentPane().setBackground(Color.GREEN);
        }
   
        public void mouseExited (MouseEvent e) {
            statusBar.setText("Mouse outside window");
            getContentPane().setBackground(Color.WHITE);
        }
   
        //MouseMotionListener event handler
    public void mouseDragged (MouseEvent e) {
            statusBar.setText("Dragged at ["+ e.getX() + "," + e.getY() + "]");
        }
   
    public void mouseMoved (MouseEvent e) {
            statusBar.setText("Moved at ["+ e.getX() + "," + e.getY() + "]");
        }
   
        public static void main (String args[]) {
            MouseEventHadling test = new MouseEventHadling();
            test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }

Kajian 2 - Contoh Menu dengan Koneksi Internet

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class PIS1003_Mella {
    public static void main(String[] args) {

        final JFrame frame = new JFrame("PIS 10 03 Mella");
        frame.setSize(500, 500);
        frame.setLocation(200, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);

        JPanel panel = new JPanel();
        JLabel label = new JLabel("URL");
        final JTextField textField = new JTextField(25);
        JButton button = new JButton("Search");
        final JTextArea textArea = new JTextArea(20, 30);
        final JScrollPane scrollPane = new JScrollPane();
        scrollPane.getViewport().add(textArea);

        JMenuBar menu = new JMenuBar();
        JMenu file = new JMenu("file");
        JMenu edit = new JMenu("Edit");
        JMenu format = new JMenu("Format");
        JMenu view = new JMenu("View");
        JMenu help = new JMenu("Help");

        menu.add(file);
        menu.add(edit);
        menu.add(format);
        menu.add(view);
        menu.add(help);
        menu.setVisible(true);

        JMenuItem menusetting = new JMenu("setting");
        JMenuItem menusave = new JMenuItem("save");
        JMenuItem menuclose = new JMenuItem("close");
        JMenuItem menusetting1 = new JMenuItem("setting1");
        JMenuItem menusetting2 = new JMenuItem("setting2");

        JMenuItem menuundo = new JMenuItem("Undo" + "     " + "ctrl+z");
        JMenuItem menucut = new JMenuItem("Cut" + "        " + "ctrl+x");
        JMenuItem menupaste = new JMenuItem("Paste" + "   " + "ctrl+v");
        JMenuItem menudelete = new JMenuItem("Delete" + "   " + "del");

        JMenuItem menuword = new JMenuItem("Word Warp");
        JMenuItem menufont = new JMenuItem("Font");

        JMenuItem menustatus = new JMenuItem("Status Bar");

        JMenuItem menuview = new JMenuItem("View Help");
        JMenuItem menuabout = new JMenuItem("About Notepad");

        menusetting.add(menusetting1);
        menusetting.add(menusetting2);

        file.add(menusetting);
        file.addSeparator();
        file.add(menusave);
        file.add(menuclose);

        edit.add(menuundo);
        edit.add(menucut);
        edit.add(menupaste);
        edit.add(menudelete);

        format.add(menuword);
        format.add(menufont);

        view.add(menustatus);

        help.add(menuview);
        help.add(menuabout);
        file.setVisible(true);

        panel.add(label);
        panel.add(textField);
        panel.add(button);
        panel.add(scrollPane);

        frame.add(panel);
        frame.add(menu, BorderLayout.NORTH);
        frame.setVisible(true);

        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                koneksi(textField, textArea);
                frame.setVisible(true);

            }
        });

    }

    private static void koneksi(final JTextField tf, final JTextArea ta) {
        try {
            URL url = new URL(tf.getText().trim());

            URLConnection con = url.openConnection();

            InputStream is = con.getInputStream();

            ByteArrayOutputStream os = new ByteArrayOutputStream();

            byte[] b = new byte[10];
            int len;
            while ((len = is.read(b, 0, b.length)) != -1) {
                os.write(b, 0, len);
            }

            ta.setText(new String(os.toByteArray()));

            os.close();
            is.close();

        } catch (MalformedURLException e) {
            JOptionPane.showMessageDialog(null, "coba lagi url", "Warning", 1);
        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "coba lagi url", "Warning", 0);
        }

    }

}

Kajian 2 - ButtonGroup


JButton Group adalah membuat  multi-lingkup  pengecualian  untuk  satu  set
tombol. Menciptakan satu set tombol ButtonGroup dengan objek yang sama berarti
salah  satu  yang  dipilh,  dari  tombol-tombol  tersebut  akan  menonaktifkan  semua
tombol lain dalam grup.

Beikut Contoh Sintaknya :
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class buttong extends JFrame implements ActionListener {
      JRadioButton bgRed, bgBlue, bgBlack;
      ButtonGroup grup1;

      public buttong() {
                  setTitle("Demo Radio Button");
                  setDefaultCloseOperation(EXIT_ON_CLOSE);
                  getContentPane().setLayout(
                                          new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));

                  bgRed = new JRadioButton("Red");
                  bgBlue = new JRadioButton("Blue", false);
                  bgBlack = new JRadioButton("Black", false);

                  bgRed.setActionCommand("merah");
                  bgBlue.setActionCommand("biru");
                  bgBlack.setActionCommand("hitam");

                  grup1 = new ButtonGroup();
                  grup1.add(bgRed);
                  grup1.add(bgBlue);
                  grup1.add(bgBlack);

                  getContentPane().add(bgRed);
                  getContentPane().add(bgBlue);
                  getContentPane().add(bgBlack);

                  bgRed.addActionListener(this);
                  bgBlue.addActionListener(this);
                  bgBlack.addActionListener(this);

      }

      public void actionPerformed(ActionEvent evt) {
                  if (bgRed.isSelected())
                              getContentPane().setBackground(Color.red);
                  else if (evt.getActionCommand().equals("biru"))
                              getContentPane().setBackground(Color.blue);
                  else
                              getContentPane().setBackground(Color.black);
      }

      public static void main(String[] args) {
                  buttong demoApp = new buttong();
                  demoApp.setSize(250, 225);
                  demoApp.setVisible(true);
      }

}