1

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
}
mKorbel
110k20 gold badges138 silver badges331 bronze badges
asked Nov 16, 2012 at 8:58
5
  • 2
    Change public void Paint(Graphics g) to public void paint(Graphics g) and also add annotation @Override before this method Commented Nov 16, 2012 at 9:02
  • 1
    As general advice. Don't paint to a top-level container like JFrame. Instead @Override paintComponent(Graphics)` in JPanel that is added to the frame, or alternnately, paint in a BufferedImage that is added to the frame (or a panel etc.). Commented Nov 16, 2012 at 9:44
  • As general practice, you must call super.paint Commented Nov 16, 2012 at 10:15
  • 1
    You might like to take the time to read through Graphics 2D, Performing Custom Painting and Painting in AWT and Swing Commented Nov 16, 2012 at 10:24
  • @CAMOBAP: You provided the quickest correct solution and I will like to give you credit if you post it as an answer so I can select yours as the best answer. Commented Nov 17, 2012 at 2:25

2 Answers 2

1

It's paint (with a lower case 'p')

answered Nov 16, 2012 at 9:38
Sign up to request clarification or add additional context in comments.

Comments

0

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

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.