====== Η κλάση Color ====== Η κλάση [[https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html|Color]] δίνει την δυνατότητα να ορίσετε χρώματα στο //background//, το //foreground// ή τα //borders// των αντικειμένων που χρησιμοποιείτε. Για παράδειγμα αν θέλετε να ορίσετε το χρώμα στο background αντικειμένων του τύπου [[http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html|JComponent]] (π.χ. JPanel, JMenu, JButton, JLabel) μπορείτε να το κάνετε με χρήση της μεθόδου public void setBackground(Color bg) Για παράδειγμα, αν θέλετε να αλλάξετε το background color σε μπλε σε ένα παράθυρο, αυτό μπορείτε να το κάνετε με μία δήλωση της μορφής (υποθέτωντας ότι είστε σε μία μέθοδο ή στον κατασκευαστή της κλάσης που κληρονομεί την κλάση JFrame): this.getContnetPane().setBackground(Color.BLUE); Η κλάση Color παρέχει τα παρακάτω χρώματα ως στατικές μεταβλητές τύπου Color. Color.BLACK Color.BLUE Color.CYAN Color.DARK_GRAY Color.GRAY Color.GREEN Color.LIGHT_GRAY Color.MAGENTA Color.ORANGE Color.PINK Color.RED Color.WHITE Color.YELLOW Αν θέλετε να ορίσετε τα δικά σας αντικείμενα τύπου Color μπορείτε να το κάνετε με ένα από τους παρακάτω [[https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#constructor_summary|κατασκευαστές]]. Color(ColorSpace cspace, float[] components, float alpha) Creates a color in the specified ColorSpace with the color components specified in the float array and the specified alpha. ------------------------------------------------------------------------- Color(float r, float g, float b) Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0). ------------------------------------------------------------------------- Color(float r, float g, float b, float a) Creates an sRGB color with the specified red, green, blue, and alpha values in the range (0.0 - 1.0). ------------------------------------------------------------------------- Color(int rgb) Creates an opaque sRGB color with the specified combined RGB value consisting of the red component in bits 16-23, the green component in bits 8-15, and the blue component in bits 0-7. ------------------------------------------------------------------------- Color(int rgba, boolean hasalpha) Creates an sRGB color with the specified combined RGBA value consisting of the alpha component in bits 24-31, the red component in bits 16-23, the green component in bits 8-15, and the blue component in bits 0-7. ------------------------------------------------------------------------- Color(int r, int g, int b) Creates an opaque sRGB color with the specified red, green, and blue values in the range (0 - 255). ------------------------------------------------------------------------- Color(int r, int g, int b, int a) Creates an sRGB color with the specified red, green, blue, and alpha values in the range (0 - 255). ====== Παράδειγμα χρήση της κλάσης Color ====== Παρακάτω δίνουμε ένα παράδειγμα όπου χρησιμοποιούμε ότι μάθαμε μέχρι τώρα αναφορικά με το Swing framework. Δημιουργούμε ένα παράθυρο και ορίζουμε ως Manager για το content pane του παραθύρου τον [[swing:start#Border Layout Manager|BorderLayout Manager]]. Στις περιοχές //WEST//, //CENTER//, //EAST// τοποθετούμε απλά JPanel αντικείμενα τα οποία τους αλλάζουμε το χρώμα. Στην περιοχή //SOUTH// τοποθετούμε ένα νέο JPanel (buttonPanel) με FlowLayout Manager και 3 κουμπιά, ένα κόκκινο, ένα άσπρο και ένα μπλε. Κάθε φορά που πατάμε ένα κουμπί τα χρώματα στο τρία παραπάνω Panels εναλλάσσονται. Δείτε τον κώδικα και κατεβάστε και τρέξτε το παράδειγμα. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class PanelDemo extends JFrame implements ActionListener { public static final int WIDTH = 300; public static final int HEIGHT = 200; private JPanel redPanel; private JPanel whitePanel; private JPanel bluePanel; public static void main(String args[]) { PanelDemo gui = new PanelDemo(); gui.setVisible(true); } public PanelDemo() { super("Panel Demonstration"); setSize(WIDTH, HEIGHT); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); JPanel biggerPanel = new JPanel(); biggerPanel.setLayout(new GridLayout(1,3)); redPanel = new JPanel(); redPanel.setBackground(Color.LIGHT_GRAY); biggerPanel.add(redPanel); whitePanel = new JPanel(); whitePanel.setBackground(Color.LIGHT_GRAY); biggerPanel.add(whitePanel); bluePanel = new JPanel(); bluePanel.setBackground(Color.LIGHT_GRAY); biggerPanel.add(bluePanel); add(biggerPanel, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout()); buttonPanel.setBackground(Color.LIGHT_GRAY); JButton redButton = new JButton("Red"); redButton.setBackground(Color.RED); redButton.addActionListener(this); buttonPanel.add(redButton); JButton whiteButton = new JButton("White"); whiteButton.setBackground(Color.WHITE); whiteButton.addActionListener(this); buttonPanel.add(whiteButton); JButton blueButton = new JButton("Blue"); blueButton.setBackground(Color.BLUE); blueButton.addActionListener(this); buttonPanel.add(blueButton); add(buttonPanel, BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e) { String buttonString = e.getActionCommand(); if(buttonString.equals("Red") ) { redPanel.setBackground(Color.RED); whitePanel.setBackground(Color.LIGHT_GRAY); bluePanel.setBackground(Color.LIGHT_GRAY); } else if(buttonString.equals("White") ) { redPanel.setBackground(Color.LIGHT_GRAY); whitePanel.setBackground(Color.WHITE); bluePanel.setBackground(Color.LIGHT_GRAY); } else if(buttonString.equals("Blue") ) { redPanel.setBackground(Color.LIGHT_GRAY); whitePanel.setBackground(Color.LIGHT_GRAY); bluePanel.setBackground(Color.BLUE); } } }