简体   繁体   English

更改方形文本字段的颜色

[英]changing color for the square textfield

I'm trying to create a layout that would take 3 RGB colors and change the background of the textfield but I'm not able to do so. 我正在尝试创建一种将采用3种RGB颜色并更改文本字段背景的布局,但我无法这样做。

package Quizzes_practice;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class quiz3 extends JFrame{
    private JPanel up; 
    private JPanel down; 
    private JPanel left; // as mother container 
    private JPanel right;


    private JLabel font_size; 
    private JLabel color_val;
    private JLabel r;
    private JLabel g;
    private JLabel b;



    private JTextField font_text;
    private JTextField r_text;
    private JTextField g_text;
    private JTextField b_text;
    private JLabel color_text;
    private JTextField red; // the big square


    private JCheckBox bold;
    private JCheckBox italic;


    private JRadioButton fg;
    private JRadioButton bg;
    private JRadioButton reset;
    private ButtonGroup gorup;

    //private JPanel container; // this will sit in the left corner
    private JPanel panel1; // for each row one of these
    private JPanel panel2;
    private JPanel panel3;
    private JPanel panel4;

    private JPanel center;





    public quiz3(){
        JFrame myframe = new JFrame();
        setLayout(new BorderLayout()); // general layout
        JPanel up = new JPanel();
        JPanel down  = new JPanel();
        JPanel left = new JPanel();
        JPanel right = new JPanel();

        // adding components

        // adding the main 4 panels to the their positions

        // panel left will be the container
        JLabel font_size = new JLabel("Font Size ");
        JLabel r = new JLabel("R");
        JLabel g = new JLabel("G");
        JLabel b = new JLabel("B");

        myhandler handler = new myhandler();

        JTextField font_text = new JTextField(10);
        JTextField r_text = new JTextField(4);
        r_text.addActionListener(handler);
        JTextField g_text = new JTextField(4);
        g_text.addActionListener(handler);
        JTextField b_text = new JTextField(4);
        b_text.addActionListener(handler);

        JCheckBox bold = new JCheckBox("Bold");
        JCheckBox italic = new JCheckBox("Italic");


        JRadioButton fg = new JRadioButton("Foreground");
        JRadioButton bg = new JRadioButton("Background");
        JRadioButton reset = new JRadioButton("Reset");
        ButtonGroup group = new ButtonGroup();



        //JPanel center = new JPanel();
        red = new JTextField(); // text field that I want to change its color 
        //center.setLayout(new FlowLayout());
        //center.add(red);
        ///red.setBackground(Color.RED);

        add(up, BorderLayout.NORTH);
        add(down, BorderLayout.SOUTH);
        add(left, BorderLayout.WEST);
        add(red, BorderLayout.CENTER);

        JPanel panel1 = new JPanel ();
        JPanel panel2 = new JPanel ();
        JPanel panel3 = new JPanel ();
        JPanel panel4 = new JPanel ();
        // adding compnents to the frame 
        up.setLayout(new FlowLayout());
        up.add(font_size);
        up.add(font_text);
        up.add(bold);
        up.add(italic);

        down.setLayout(new FlowLayout());
        //down.add(group);
        group.add(fg);
        group.add(bg);
        group.add(reset);

        down.add(fg);
        down.add(bg);
        down.add(reset);


        JLabel color_text = new JLabel("Font size");
        panel1.add(color_text);
        panel2.setLayout(new FlowLayout());
        panel2.add(r);
        panel2.add(r_text);

        panel3.setLayout(new FlowLayout());
        panel3.add(g);
        panel3.add(g_text);

        panel4.setLayout(new FlowLayout());
        panel4.add(b);
        panel4.add(b_text);

        left.setLayout(new GridLayout(5,0));
        left.add(panel1);
        left.add(panel2);
        left.add(panel3);
        left.add(panel4);


    }

    private class myhandler implements ActionListener{
        int red1;
        int blue1;
        int green1;
        public void actionPerformed (ActionEvent event){

            if(event.getSource()== r_text){
                String a = event.getActionCommand();
                int a2 = Integer.parseInt(a);
                Color mycolor = new Color(a2);
                red.setBackground(mycolor);


            }

            if(event.getSource()== b_text){
                String a = event.getActionCommand();
                int a2 = Integer.parseInt(a);
                Color mycolor = new Color(a2);
                red.setBackground(mycolor);
                }

            if(event.getSource()== g_text){
                String a = event.getActionCommand();
                int a2 = Integer.parseInt(a);
                Color mycolor = new Color(a2);
                red.setBackground(mycolor);

            }
            else {System.out.println("error!");}







        }
    }

}

I'm not getting an error, it's just not happening, the condition I believe is incorrect 我没有收到错误,只是没有发生,我认为条件不正确

You're shadowing your JTextField variables. 您正在隐藏 JTextField变量。 Replace 更换

JTextField r_text = new JTextField(4);

with

r_text = new JTextField(4);

The same applys to the other color components. 其他颜色成分也相同。

Aside: Consider using JColorChooser . 另外:考虑使用JColorChooser Read How to Use Color Choosers 阅读如何使用颜色选择器

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM