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
}
}
|