【问题标题】:JLabel won't work with ButtonHandlerJLabel 不适用于 ButtonHandler
【发布时间】:2017-03-22 12:00:12
【问题描述】:

对于我的任务,我必须创建一个基于框架的应用程序,允许用户在三个文本字段中指定 RGB 值,并且当按下按钮时,以所选颜色显示我的姓名和注册号。我相信到目前为止我的所有代码都是正确的,但是看起来改变颜色的部分存在问题。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;



public class ex1 extends JFrame {
JLabel label;
JTextField r, g, b;

public ex1() {
    //panels to hold information
    JPanel bottomPanel = new JPanel();
    JPanel upperPanel = new JPanel();

    //fields that will hold the colour values
    r = new JTextField("Red", 10);
    g = new JTextField("Green", 10);
    b = new JTextField("Blue", 10);

    //add to frame
    bottomPanel.add(r);
    bottomPanel.add(g);
    bottomPanel.add(b);
    add(bottomPanel, BorderLayout.SOUTH);
    add(upperPanel, BorderLayout.CENTER);
    label = new JLabel("CE203 Assignment 1, submitted by:");
    label.setForeground(new Color(255, 0, 0));
    JButton button = new JButton("Enter");
    upperPanel.add(label);
    bottomPanel.add(button);
    button.addActionListener(new ButtonHandler(this));
}

public JLabel getLabel() {
    return label;
}

class ButtonHandler implements ActionListener {
    private ex1 assignment1;
    public ButtonHandler(ex1 assignment1) {
        this.assignment1 = assignment1;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        int r1 = Integer.parseInt(assignment1.r.getText());
        int g1 = Integer.parseInt(assignment1.g.getText());
        int b1 = Integer.parseInt(assignment1.b.getText());
        assignment1.getLabel().setForground(new Color(r1, g1, b1));
    }
}

public static void main(String[] args) {
    JFrame frame = new ex1();
    frame.setSize(400, 400);
    frame.setDefaultCloseOperation(ex1.EXIT_ON_CLOSE);
    frame.setVisible(true);
}
}

如果有人能告诉我出了什么问题以及我该如何解决它,将不胜感激。

【问题讨论】:

    标签: java swing jframe jpanel jtextfield


    【解决方案1】:

    在报告编译错误时不要忽略 IDE!

    assignment1.getLabel().setForground(new Color(r1, g1, b1));
    

    应该是:

    assignment1.getLabel().setForeground(new Color(r1, g1, b1));
    

    其他提示

    1. 代替:

      frame.setSize(400, 400); // random guess at required size
      

      有:

      frame.pack(); // calculates the required size
      
    2. 在现实世界的编程中,当一个 JColorChooser 非常出色时,用户会因提供 3 个文本字段而对程序员处以私刑。

    【讨论】:

    • 我不敢相信我是多么愚蠢!当我看到你的评论时,我真的是捂脸哈哈,谢谢你的快速回复:)
    • “当我看到你的评论时,我真的是在打脸……” 我上一次打脸,一周前,下一次打脸,……迫在眉睫。 ;) 请在网站允许时accept the answer
    • 啊,谢谢提醒,以后我会试试的。不幸的是,任务是让用户通过在 3 个三个单独的文本字段中输入 rgb 值来选择颜色,因此在这种情况下由讲师决定
    • “在这种情况下由讲师决定” 是的,我从问题中猜到了这一点(内容丰富且清晰 - 干得好!)。我认为教练需要提高他们练习的重点/质量。在某些现实情况下,作为程序员,我们需要解析整数,但这不是其中之一。
    猜你喜欢
    • 2013-06-20
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多