Can anyone explain the proper way to draw graphics on a frame? Ive looked at other examples and this should work but it doesnt. See the "Paint" method. I tried to draw a square (rectangle) and it doesnt appear on my frame.
Regards
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Colors extends javax.swing.JFrame {
public Colors() {
initComponents();
addSliderListeners();
addSliderLabels();
}
public void Paint(Graphics g){
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.BLUE);
g2.draw(new Rectangle(25,25,200,200));
}
private void addSliderListeners(){
sliderRed.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
updateImage();
}
});
sliderGreen.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
updateImage();
}
});
sliderBlue.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
updateImage();
}
});
}
private void updateImage(){
lblRedDec.setText(""+sliderRed.getValue());
lblRedDec.setForeground(new Color(sliderRed.getValue(),0,0));
lblRedHex.setText(Integer.toHexString(sliderRed.getValue()));
lblRedHex.setForeground(lblRedDec.getForeground());
//Color textColor = new Color( 255-lblRedDec.getForeground().getRed(),
// 255-lblRedDec.getForeground().getGreen(),
// 255-lblRedDec.getForeground().getBlue()
// );
//jLabel1.setBackground(textColor);
lblGreenDec.setText(""+sliderGreen.getValue());
lblGreenDec.setForeground(new Color(0,sliderGreen.getValue(),0));
lblGreenHex.setText(Integer.toHexString(sliderGreen.getValue()));
lblGreenHex.setForeground(lblGreenDec.getForeground());
lblBlueDec.setText(""+sliderBlue.getValue());
lblBlueHex.setText(Integer.toHexString(sliderBlue.getValue()));
lblBlueDec.setForeground(new Color(0,0,sliderBlue.getValue()));
lblBlueHex.setForeground(lblBlueDec.getForeground());
}
private void addSliderLabels() {
sliderRed.setPaintLabels(true);
sliderGreen.setPaintLabels(true);
sliderBlue.setPaintLabels(true);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
sliderRed = new javax.swing.JSlider();
lblRed = new javax.swing.JLabel();
lblRedHex = new javax.swing.JLabel();
lblRedDec = new javax.swing.JLabel();
sliderGreen = new javax.swing.JSlider();
lblGreen = new javax.swing.JLabel();
lblGreenHex = new javax.swing.JLabel();
lblGreenDec = new javax.swing.JLabel();
sliderBlue = new javax.swing.JSlider();
lblBlue = new javax.swing.JLabel();
lblBlueHex = new javax.swing.JLabel();
lblBlueDec = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
sliderRed.setMajorTickSpacing(15);
sliderRed.setMaximum(255);
sliderRed.setMinorTickSpacing(5);
sliderRed.setOrientation(javax.swing.JSlider.VERTICAL);
sliderRed.setPaintTicks(true);
sliderRed.setSnapToTicks(true);
sliderRed.setToolTipText("");
sliderRed.setValue(212);
sliderRed.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
sliderRed.setName(""); // NOI18N
lblRed.setText("Red");
lblRedHex.setText("hex");
lblRedDec.setText("dec");
sliderGreen.setMajorTickSpacing(15);
sliderGreen.setMaximum(255);
sliderGreen.setMinorTickSpacing(5);
sliderGreen.setOrientation(javax.swing.JSlider.VERTICAL);
sliderGreen.setPaintTicks(true);
sliderGreen.setSnapToTicks(true);
sliderGreen.setToolTipText("");
sliderGreen.setValue(35);
sliderGreen.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
sliderGreen.setName(""); // NOI18N
lblGreen.setText("Green");
lblGreenHex.setText("hex");
lblGreenDec.setText("dec");
sliderBlue.setMajorTickSpacing(15);
sliderBlue.setMaximum(255);
sliderBlue.setMinorTickSpacing(5);
sliderBlue.setOrientation(javax.swing.JSlider.VERTICAL);
sliderBlue.setPaintTicks(true);
sliderBlue.setSnapToTicks(true);
sliderBlue.setToolTipText("");
sliderBlue.setValue(218);
sliderBlue.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
sliderBlue.setName(""); // NOI18N
lblBlue.setText("Blue");
lblBlueHex.setText("hex");
lblBlueDec.setText("dec");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblRedHex)
.addComponent(lblRed)
.addComponent(lblRedDec))
.addGap(25, 25, 25))
.addGroup(layout.createSequentialGroup()
.addGap(26, 279, Short.MAX_VALUE)
.addComponent(sliderRed, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sliderGreen, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblGreenHex)
.addComponent(lblGreen)
.addComponent(lblGreenDec))
.addGap(25, 25, 25)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sliderBlue, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblBlueHex)
.addComponent(lblBlue)
.addComponent(lblBlueDec))
.addGap(25, 25, 25)))
.addGap(6, 6, 6))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addComponent(lblBlueDec)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblBlueHex)
.addGap(18, 18, 18)
.addComponent(lblBlue)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sliderBlue, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(lblGreenDec)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblGreenHex)
.addGap(18, 18, 18)
.addComponent(lblGreen)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sliderGreen, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(lblRedDec)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblRedHex)
.addGap(16, 16, 16)
.addComponent(lblRed)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sliderRed, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
pack();
}// </editor-fold>
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Colors.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Colors.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Colors.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Colors.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Colors().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel lblBlue;
private javax.swing.JLabel lblBlueDec;
private javax.swing.JLabel lblBlueHex;
private javax.swing.JLabel lblGreen;
private javax.swing.JLabel lblGreenDec;
private javax.swing.JLabel lblGreenHex;
private javax.swing.JLabel lblRed;
private javax.swing.JLabel lblRedDec;
private javax.swing.JLabel lblRedHex;
private javax.swing.JSlider sliderBlue;
private javax.swing.JSlider sliderGreen;
private javax.swing.JSlider sliderRed;
// End of variables declaration
}
2 Answers 2
It's paint (with a lower case 'p')
answered Nov 16, 2012 at 9:38
Maurice Perry
32.9k9 gold badges72 silver badges97 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
as CAMOBAB said in the comments
Change public void Paint(Graphics g) to public void paint(Graphics g) and also add annotation @Override before this method
answered May 21, 2013 at 16:58
06needhamt
1,6052 gold badges20 silver badges38 bronze badges
Comments
lang-java
public void Paint(Graphics g)topublic void paint(Graphics g)and also add annotation@Overridebefore this methodJFrame. Instead@OverridepaintComponent(Graphics)` inJPanelthat is added to the frame, or alternnately, paint in aBufferedImagethat is added to the frame (or a panel etc.).