This shows you the differences between two versions of the page.
swing:color [2015/05/05 13:15] gthanos [Παράδειγμα χρήση της κλάσης Color] |
swing:color [2016/02/26 11:15] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Η κλάση 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) μπορείτε να το κάνετε με χρήση της μεθόδου | ||
- | <code java> | ||
- | public void setBackground(Color bg) | ||
- | </code> | ||
- | |||
- | Για παράδειγμα, αν θέλετε να αλλάξετε το background color σε μπλε σε ένα παράθυρο, αυτό μπορείτε να το κάνετε με μία δήλωση της μορφής (υποθέτωντας ότι είστε σε μία μέθοδο ή στον κατασκευαστή της κλάσης που κληρονομεί την κλάση JFrame): | ||
- | <code java> | ||
- | this.getContnetPane().setBackground(Color.BLUE); | ||
- | </code> | ||
- | |||
- | Η κλάση Color παρέχει τα παρακάτω χρώματα ως στατικές μεταβλητές τύπου Color. | ||
- | <code java> | ||
- | 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 | ||
- | </code> | ||
- | |||
- | Αν θέλετε να ορίσετε τα δικά σας αντικείμενα τύπου Color μπορείτε να το κάνετε με ένα από τους παρακάτω [[https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#constructor_summary|κατασκευαστές]]. | ||
- | <code java> | ||
- | 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). | ||
- | </code> | ||
- | |||
- | ====== Παράδειγμα χρήση της κλάσης Color ====== | ||
- | |||
- | Παρακάτω δίνουμε ένα παράδειγμα όπου χρησιμοποιούμε ότι μάθαμε μέχρι τώρα αναφορικά με το Swing framework. Δημιουργούμε ένα παράθυρο και ορίζουμε ως Manager για το content pane του παραθύρου τον [[swing:start#Border Layout Manager|BorderLayout Manager]]. Στις περιοχές //WEST//, //CENTER//, //EAST// τοποθετούμε απλά JPanel αντικείμενα τα οποία τους αλλάζουμε το χρώμα. Στην περιοχή //SOUTH// τοποθετούμε ένα νέο JPanel (buttonPanel) με FlowLayout Manager και 3 κουμπιά. Κάθε φορά που πατάμε ένα κουμπί τα χρώματα στο τρία παραπάνω Panels εναλλάσσονται. Δείτε τον κώδικα και κατεβάστε και τρέξτε το παράδειγμα. | ||
- | |||
- | <code java PanelDemo.java> | ||
- | 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); | ||
- | } | ||
- | } | ||
- | } | ||
- | </code> | ||