Java: JPanel - Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
// File : gui/low-level/drawing2/DemoDrawing2.java // Purpose: Demo creating new graphical component. // Uses anonymous inner class listener, BorderLayout // Author : Fred Swartz - 21 Sept 2006 - Placed in public domain. import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; ///////////////////////////////////////////////////// DemoDrawing2 public class DemoDrawing2 extends JFrame { //===================================================== fields private DrawingArea left = new DrawingArea(); private DrawingArea rite = new DrawingArea(); //================================================ Constructor public DemoDrawing2() { left.setBackground(Color.white); rite.setBackground(Color.black); JButton changeColorBtn = new JButton("Randomize Colors"); changeColorBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { left.setMyColor(randomColor()); rite.setMyColor(randomColor()); } }); //... Add components to layout JPanel content = new JPanel(); content.setLayout(new BorderLayout(5, 5)); content.add(changeColorBtn, BorderLayout.NORTH); content.add(left, BorderLayout.WEST); content.add(rite, BorderLayout.EAST); //... Set window characteristics setContentPane(content); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Demo Drawing"); setLocationRelativeTo(null); // Center window. pack(); } //=================================================== randomColor private static Color randomColor() { return new Color((int) (Math.random() * 256), // Red (int) (Math.random() * 256), // Green (int) (Math.random() * 256)); // Blue } //========================================================== main public static void main(String[] args) { JFrame window = new DemoDrawing2(); window.setVisible(true); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// File : gui/low-level/drawing2/DrawingArea.java // Purpose: Demo subclassing JPanel, overriding paintComponent, // private state, use of repaint(). // Author : Fred Swartz - 21 Sept 2006 - Placed in public domain. import java.awt.*; import javax.swing.*; ///////////////////////////////////////////////////////// DrawingArea class DrawingArea extends JPanel { //======================================================== fields private Color _ovalColor; // Color of oval. //=================================================== constructor public DrawingArea() { _ovalColor = Color.GREEN; // Initial color. setPreferredSize(new Dimension(100,100)); } //================================================ paintComponent @Override public void paintComponent(Graphics g) { super.paintComponent(g); // Ask parent to paint background. g.setColor(_ovalColor); int w = getWidth(); // Size might have changed if int h = getHeight(); // user resized window. g.fillOval(0, 0, w, h); } //==================================================== setMyColor public void setMyColor(Color col) { _ovalColor = col; // Remember color. repaint(); // Color changed, must repaint } } |