×
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!
  • Students Click Here

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Jobs

NetBeans Analog clock change hands color

NetBeans Analog clock change hands color

NetBeans Analog clock change hands color

(OP)
Hello. I have analog clock app and want to change hands color using setter and getter. I write some code but not work. Can You help me?
My code:

file zegarek.java:

CODE --> java

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import static java.lang.Math.*;
import java.util.Calendar;
import javax.swing.*;

class ClockComponent extends JComponent{

        //zmienne prywatne
	private Calendar systemTime = Calendar.getInstance();
	private int centerX = 200 ;
	private int centerY = 200;
        
        private Color tloKolor;
	BufferedImage clockFace ;
	
        //konstruktor bezparametrowy public ClockComponent(){};
        public ClockComponent(){};
	
      public void setKolor (Color R) {tloKolor=R;}
      public Color getKolor () {return tloKolor;}
   
      
        
       
        
        @Override
	public void paint(Graphics g){
                 //rysowanie ogólnego wyglądu zegarka
		Graphics2D graphics = (Graphics2D)g;
                //włączenie antialiasingu aby grafika ładniej wyglądała
		graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

		if (clockFace==null) {
                        //wczytanie obrazka z tarczą
			clockFace = new BufferedImage(400, 400, BufferedImage.BITMASK);
			Graphics2D face = clockFace.createGraphics();
			face.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			drawTiks(face);
                        
                        //szerokość piura  
			BasicStroke width = new BasicStroke(3);
			face.setStroke(width);
			face.setPaint(Color.BLACK);
			//face.drawOval(0, 0, 400, 400);
			drawHands(face, 0, 0, 0, 10);
		}

		graphics.drawImage(clockFace, null, 0, 0);
		drawSecond(graphics);
		drawMinute(graphics);
		drawHour(graphics);
		
	}
        //parametry wskazówki sekund
	private void drawSecond(Graphics2D graphics){
		int seconds = systemTime.get(Calendar.SECOND);//pobieranie sekund z kalendarza
		int secondsAngle = seconds*6;//ustawienie kąta dla wskazówki
		drawHands(graphics, -30, 160, secondsAngle,1);//rysowanie wskazówki
	}
        //parametry wskazówki minut
	private void drawMinute(Graphics2D graphics){
		int minutes = systemTime.get(Calendar.MINUTE);//pobieranie minut z kalendarza
		double minuteAngle = (minutes)*6;//ustawienie kąta dla wskazówki
		drawHands(graphics, 0, 150, minuteAngle,2);//rysowanie wskazówki
	}

        //parametry wskazówki godzin
	private void drawHour(Graphics2D graphics){
		int hours = systemTime.get(Calendar.HOUR); //pobieranie godziny z kalendarza
		double hourAngle = (hours+ (double)(systemTime.get(Calendar.MINUTE))/60)*30; //ustawienie kąta dla wskazówki
		drawHands(graphics, 0, 110, hourAngle,4);//rysowanie wskazówki
	}
        
        //rysowanie wskazówek
	private void drawTiks(Graphics2D graphics){
		int x=0;
		
		while(true){
			int y =180;
			if(x%30==0)y=170;
			drawHands(graphics, y, 180, x,2);
			if (x==360) break;
			x += 6;

		}
	}


	//ustawienia wyglądu wskazówki
	private void drawHands(Graphics2D graphics, int startRadius, int endRadius, double teta,int width){

		double radian = toRadians(teta-90);
		int startX = centerX+ (int)(startRadius*cos(radian));
		int startY = centerY+ (int)(startRadius*sin(radian));
		int endX = centerX+ (int)(endRadius*cos(radian));
		int endY = centerY+ (int)(endRadius*sin(radian));
        

                BasicStroke line = new BasicStroke(width,BasicStroke.JOIN_ROUND,BasicStroke.CAP_ROUND);
		graphics.setStroke(line);
		graphics.setColor(tloKolor);
		graphics.drawLine(startX, startY, endX, endY);
                
	}

	ActionListener update = new ActionListener() {

		public void actionPerformed(ActionEvent e) {
			systemTime.setTimeInMillis(System.currentTimeMillis());
			repaint();
		}
	};


	Timer fireUpdate = new Timer(1000, update);
} 

file okno.java:

CODE --> java

import java.awt.Color;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Admin
 */
public class okno extends javax.swing.JFrame {

    /**
     * Creates new form okno
     */
    public okno() {
        initComponents();
        ClockComponent clock = new ClockComponent();
		clock.setSize(600, 600);
		jPanel1.add(clock);
		clock.fireUpdate.start();
    }

    /**
     * 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() {

        jColorChooser1 = new javax.swing.JColorChooser();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jComboBox1 = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/clock.png"))); // NOI18N

        jLabel2.setText("Ustaw kolor zegara");

        jButton1.setText("Zmień");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ZmienKolor(evt);
            }
        });

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "RED", "GREEN" }));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2))
                .addGap(0, 0, Short.MAX_VALUE))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(134, 134, 134))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton1))
                .addContainerGap(112, Short.MAX_VALUE))
        );

        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()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        

    private void ZmienKolor(java.awt.event.ActionEvent evt) {                            
       ClockComponent kolor = new ClockComponent();
       String stringR = jComboBox1.getSelectedItem().toString();
       if (stringR.equals("RED")) {
                Color S = Color.RED;
                kolor.setKolor(S);
                kolor.repaint();
                jButton1.setBackground(S);
                kolor.repaint();
                
                } 
                else if (stringR.equals("GREEN")){
                Color S = Color.GREEN;
                kolor.setKolor(S);
                kolor.repaint();
                jButton1.setBackground(S);
                kolor.repaint();
                }
       
         
       
    }                           

    /**
     * @param args the command line arguments
     */
    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(okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(okno.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 okno().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JColorChooser jColorChooser1;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
} 

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close