⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menucolor.java

📁 java思想编程与设计模块
💻 JAVA
字号:
/*
 * 文件名:MenuColor.java
 * 说  明:实现文字颜色的编辑功能
 */
// 导入相关包
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
// 主类MenuColor
public class MenuColor extends JDialog
                       implements ItemListener,
                                  ActionListener,
                                  TextListener,
                                  AdjustmentListener {
  // AWT组件声明
  CheckboxGroup gp;
  Checkbox fore, back;
  Scrollbar scrollbarRed, scrollbarGreen, scrollbarBlue;
  TextField textFieldRed, textFieldGreen, textFieldBlue;
  Button colorButtonOk, colorButtonCancel;
  Checkbox colorCheckbox;
  TextField colorTextField;
  // 改变标记
  boolean changed = true;
  // 同步标记
  boolean synchronism = false;
  // 颜色数组
  Color[] fbgc = new Color[2];
  Color[] fbgcOld = new Color[2];
  // 前景色标记
  boolean isFore = true;

  // 构造方法
  MenuColor(Frame frame, boolean modal) {
    super(frame, modal);
  }
  
  // myLayout方法,窗体布局
  public Color[] myLayout(Color fgc, Color bgc) {
    fbgc[0] = fgc;
    fbgc[1] = bgc;
    fbgcOld[0] = fgc;
    fbgcOld[1] = bgc;
    this.getContentPane().setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridwidth = 1;
    gbc.gridheight =1;
    gbc.weightx = 1;
    gbc.weighty = 1;
    gbc.fill = gbc.HORIZONTAL;
    gbc.anchor = gbc.CENTER;

    //CheckboxGroup for fore and back ground
    gp = new CheckboxGroup();
    fore = new Checkbox("Foreground", true, gp);
    back = new Checkbox("Background", false, gp);
    gbc.gridx = 1;
    gbc.gridy = 0;
    getContentPane().add(fore, gbc);
    gbc.gridx = 3;
    gbc.gridy = 0;
    getContentPane().add(back, gbc);
    fore.addItemListener(this);
    back.addItemListener(this);

    // 3 groups of Label + ScrollBar + TextField
    Label labelRed = new Label("Red");
    gbc.gridx = 0;
    gbc.gridy = 1;
    getContentPane().add(labelRed, gbc);
    scrollbarRed = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 256);
    scrollbarRed.setValue(fgc.getRed());
    gbc.gridx = 1;
    gbc.gridy = 1;
    getContentPane().add(scrollbarRed, gbc);
    scrollbarRed.addAdjustmentListener(this);
    textFieldRed = new TextField(3);
    textFieldRed.setText(scrollbarRed.getValue() + "");
    textFieldRed.addTextListener(this);
    //textFieldRed.setEditable(false);
    gbc.gridx = 2;
    gbc.gridy = 1;
    getContentPane().add(textFieldRed, gbc);

    Label labelGreen = new Label("Green");
    gbc.gridx = 0;
    gbc.gridy = 2;
    getContentPane().add(labelGreen, gbc);
    scrollbarGreen = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 256);
    scrollbarGreen.setValue(fgc.getGreen());
    gbc.gridx = 1;
    gbc.gridy = 2;
    getContentPane().add(scrollbarGreen, gbc);
    scrollbarGreen.addAdjustmentListener(this);
    textFieldGreen = new TextField(3);
    textFieldGreen.setText(scrollbarGreen.getValue() + "");
    //textFieldGreen.addTextListener(this);
    textFieldGreen.setEditable(false);
    gbc.gridx = 2;
    gbc.gridy = 2;
    getContentPane().add(textFieldGreen, gbc);

    Label labelBlue = new Label("Blue");
    gbc.gridx = 0;
    gbc.gridy = 3;
    getContentPane().add(labelBlue, gbc);
    scrollbarBlue = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 256);
    scrollbarBlue.setValue(fgc.getBlue());
    gbc.gridx = 1;
    gbc.gridy = 3;
    getContentPane().add(scrollbarBlue, gbc);
    scrollbarBlue.addAdjustmentListener(this);
    textFieldBlue = new TextField(3);
    textFieldBlue.setText(scrollbarBlue.getValue() + "");
    //textFieldBlue.addTextListener(this);
    textFieldBlue.setEditable(false);
    gbc.gridx = 2;
    gbc.gridy = 3;
    getContentPane().add(textFieldBlue, gbc);

    //2 Buttons: Ok and Cancel
    colorButtonOk = new Button("Ok");
    gbc.gridx = 4;
    gbc.gridy = 1;
    gbc.fill = gbc.NONE;
    getContentPane().add(colorButtonOk,gbc);
    colorButtonOk.addActionListener(this);

    colorButtonCancel = new Button("Cancel");
    gbc.gridx = 4;
    gbc.gridy = 2;
    getContentPane().add(colorButtonCancel,gbc);
    colorButtonCancel.addActionListener(this);

    //a Checkbox for locking RGB Scrollbar to synchronize
    colorCheckbox = new Checkbox("Lock RGB", false);
    gbc.gridx = 3;
    gbc.gridy = 3;
    getContentPane().add(colorCheckbox,gbc);
    colorCheckbox.addItemListener(this);

    //a TextField for demo the color
    colorTextField = new TextField("Java awt");
    //have to disable this because of 70% decrease in color when setEditable(false)
    //and color can't be corrected  by increasing 1/(70%) since >255
    //colorTextField.setEditable(false);
    colorTextField.setSize(90, 60);
    colorTextField.setForeground(fgc);
    colorTextField.setBackground(bgc);
    colorTextField.setFont(new Font("Courier", Font.BOLD + Font.ITALIC, 36));
    gbc.gridx = 3;
    gbc.gridy = 1;
    gbc.fill = gbc.BOTH;
    getContentPane().add(colorTextField, gbc);

    this.addWindowListener(new WindowAdapter() {
                             public void windowClosing(WindowEvent e) {
                               dispose();
                             }
                           });
    this.setLocation(120, 120);
    this.setResizable(false);
    this.setSize(480,160);
    this.setVisible(true);
    if(changed) {
      return fbgc;
    }
    else
      return fbgcOld;
  }//end of myLayout

  // 事件监听方法
  public void actionPerformed(ActionEvent ae) {
    if(ae.getSource() == colorButtonOk) {
      changed = true;
      dispose();
    }
    else if(ae.getSource() == colorButtonCancel) {
      changed = false;
      dispose();
    }
  }//end of ActionListener

  // Item事件监听方法
  public void itemStateChanged(ItemEvent ie) {
    if(ie.getSource() == fore) {
      isFore = true;
      scrollbarRed.setValue(fbgc[0].getRed());
      textFieldRed.setText(scrollbarRed.getValue() + "");
      scrollbarGreen.setValue(fbgc[0].getGreen());
      textFieldGreen.setText(scrollbarGreen.getValue() + "");
      scrollbarBlue.setValue(fbgc[0].getBlue());
      textFieldBlue.setText(scrollbarBlue.getValue() + "");
      colorTextField.setForeground(setColorVarSrollbar());
    }
    else if(ie.getSource() == back) {
      isFore = false;
      scrollbarRed.setValue(fbgc[1].getRed());
      textFieldRed.setText(scrollbarRed.getValue() + "");
      scrollbarGreen.setValue(fbgc[1].getGreen());
      textFieldGreen.setText(scrollbarGreen.getValue() + "");
      scrollbarBlue.setValue(fbgc[1].getBlue());
      textFieldBlue.setText(scrollbarBlue.getValue() + "");
      colorTextField.setBackground(setColorVarSrollbar());
    }
    else if(ie.getSource() == colorCheckbox) {
      if(colorCheckbox.getState()) {
        synchronism = true;
      }
      else {
        synchronism = false;
      }
    }
  }//end of ItemListener

  //数值调整监听方法
  public void adjustmentValueChanged(AdjustmentEvent ade) {
    if(ade.getSource() == scrollbarRed) {
      if(synchronism) {
        textFieldRed.setText(scrollbarRed.getValue() + "");
        scrollbarGreen.setValue(scrollbarRed.getValue());
        textFieldGreen.setText(scrollbarRed.getValue() + "");
        scrollbarBlue.setValue(scrollbarRed.getValue());
        textFieldBlue.setText(scrollbarRed.getValue() + "");
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }
      else {
        textFieldRed.setText(scrollbarRed.getValue()+"");
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }
    }
    else if(ade.getSource() == scrollbarGreen) {
      if(synchronism) {
        textFieldGreen.setText(scrollbarGreen.getValue() + "");
        scrollbarBlue.setValue(scrollbarGreen.getValue());
        textFieldBlue.setText(scrollbarGreen.getValue() + "");
        scrollbarRed.setValue(scrollbarGreen.getValue());
        textFieldRed.setText(scrollbarGreen.getValue() + "");
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }
      else {
          textFieldGreen.setText(scrollbarGreen.getValue() + "");
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }
    }
    else if(ade.getSource() == scrollbarBlue) {
      if(synchronism) {
        textFieldBlue.setText(scrollbarBlue.getValue() + "");
        scrollbarRed.setValue(scrollbarBlue.getValue());
        textFieldRed.setText(scrollbarBlue.getValue() + "");
        scrollbarGreen.setValue(scrollbarBlue.getValue());
        textFieldGreen.setText(scrollbarBlue.getValue() + "");
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }
      else {
        textFieldBlue.setText(scrollbarBlue.getValue() + "");
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }
    }
  }//end of AdjustmentListener

  //T文字改变监听方法
  public void textValueChanged(TextEvent te) {
    if(te.getSource() == textFieldRed) {
      int i = 0;
      try {
        i = Integer.parseInt(textFieldRed.getText());
      } catch(NumberFormatException nfe) {
      }
      if(i < 0)
        i = 0;
      if(i > 255)
        i = 255;
      scrollbarRed.setValue(i);
      if(synchronism) {
        scrollbarGreen.setValue(scrollbarRed.getValue());
        textFieldGreen.setText(scrollbarRed.getValue() + "");
        scrollbarBlue.setValue(scrollbarRed.getValue());
        textFieldBlue.setText(scrollbarRed.getValue() + "");
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }
      else {
        if(isFore) {
          colorTextField.setForeground(setColorVarSrollbar());
          fbgc[0] = setColorVarSrollbar();
        }
        else {
          colorTextField.setBackground(setColorVarSrollbar());
          fbgc[1] = setColorVarSrollbar();
        }
      }

    }
    //else if(te.getSource() == textFieldGreen) {
    //} conflict with textFieldRed
    //else if(te.getSource() == textFieldBlue) {
    //}
  }//end of TextListener

  private Color setColorVarSrollbar() {
   return new Color(scrollbarRed.getValue(),
                    scrollbarGreen.getValue(),
                    scrollbarBlue.getValue());
  }

}//end of class MenuColor

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -