swing:color

Η κλάση Color

Η κλάση Color δίνει την δυνατότητα να ορίσετε χρώματα στο background, το foreground ή τα borders των αντικειμένων που χρησιμοποιείτε. Για παράδειγμα αν θέλετε να ορίσετε το χρώμα στο background αντικειμένων του τύπου 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 μπορείτε να το κάνετε με ένα από τους παρακάτω κατασκευαστές.

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 του παραθύρου τον BorderLayout Manager. Στις περιοχές WEST, CENTER, EAST τοποθετούμε απλά JPanel αντικείμενα τα οποία τους αλλάζουμε το χρώμα. Στην περιοχή SOUTH τοποθετούμε ένα νέο JPanel (buttonPanel) με FlowLayout Manager και 3 κουμπιά, ένα κόκκινο, ένα άσπρο και ένα μπλε. Κάθε φορά που πατάμε ένα κουμπί τα χρώματα στο τρία παραπάνω Panels εναλλάσσονται. Δείτε τον κώδικα και κατεβάστε και τρέξτε το παράδειγμα.

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);
    }
  }
}
swing/color.txt · Last modified: 2016/02/26 11:15 (external edit)