Commit ed18dcb6 by Adam Gerber

easy BorderLayout painter with raw swing

parent e799ad56
Showing with 79 additions and 2 deletions
package lec05.glab.swing;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseMotionListener;
/**
* Created by Adam on 11/2/2015.
*/
public class Painter {
public class Painter implements ChangeListener {
//define a frame
private JFrame frm;
private JPanel mPanelIndicator;
private JPanel mPanelCenter;
private JPanel mPanelSlider;
private JSlider mSliderRed;
private JSlider mSliderGreen;
private JSlider mSliderBlue;
private Color mColor;
//creaete a main method that insantiates the ecnlosing object
public static void main(String[] args) {
......@@ -30,12 +46,73 @@ public class Painter {
initialize();
}
//use BorderLayout. this is the easiest one.
//https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
//our init methhod
private void initialize() {
frm = new JFrame();
frm.setBounds(100, 100, 450, 476);
frm.setBounds(100, 100, 700, 476);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//lay our componnets out
mPanelIndicator = new JPanel();
//http://stackoverflow.com/questions/17083657/make-bottom-panel-in-borderlayout-to-expand-like-center-panel
mPanelIndicator.setPreferredSize(new Dimension(frm.getWidth(), 50));
frm.getContentPane().add(mPanelIndicator, BorderLayout.NORTH);
mPanelCenter = new JPanel();
frm.getContentPane().add(mPanelCenter, BorderLayout.CENTER);
mSliderBlue = new JSlider(0,255);
mSliderGreen = new JSlider(0,255);
mSliderRed = new JSlider(0,255);
mPanelSlider = new JPanel();
mPanelSlider.add(mSliderRed);
mPanelSlider.add(mSliderGreen);
mPanelSlider.add(mSliderBlue);
frm.getContentPane().add(mPanelSlider, BorderLayout.SOUTH);
//add behavior
mColor = Color.GRAY;
mPanelIndicator.setBackground(mColor);
mSliderBlue.addChangeListener(this);
mSliderGreen.addChangeListener(this);
mSliderRed.addChangeListener(this);
mPanelCenter.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
super.mouseDragged(e);
Graphics graphics = mPanelCenter.getGraphics();
graphics.setColor(mColor);
graphics.fillOval(e.getX(), e.getY(), 20,20);
}
});
// frm.pack();
// // frm.setLocationRelativeTo(null);
// frm.setVisible(true);
}
@Override
public void stateChanged(ChangeEvent e) {
mColor = new Color(mSliderRed.getValue(),
mSliderGreen.getValue(),
mSliderBlue.getValue()
);
mPanelIndicator.setBackground(mColor);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment