【发布时间】:2018-09-17 20:12:21
【问题描述】:
我环顾四周,发现了迄今为止对我有帮助的各种信息,但我目前遇到以下问题:
如果我的 JTextField 超出 (0-255) 的范围,则它们不会更改为 0。
在单击其中一个按钮之前,JPanel 不会根据在 JTextFields 中键入的内容更改颜色。
这是我目前拥有的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class App1 extends JFrame implements ActionListener
{
JPanel upperBase, lowerBase, jpRed, jpGreen, jpBlue, jpChanging;
JLabel jLRed, jLGreen, jLBlue;
JTextField jtf_red, jtf_green, jtf_blue;
JButton rP, rM, gP, gM, bP, bM;
public static void main(String[] args)
{
App1 app = new App1();
}
App1()
{
// Creates Container
// Sets Layout for Container
Container cp = this.getContentPane();
cp.setLayout(new BoxLayout (cp, BoxLayout.Y_AXIS));
// Sets Window Title and Size
// Exits Application on Close
this.setTitle("Application 1");
this.setSize(800, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Creates 6 JPanels
upperBase = new JPanel();
lowerBase = new JPanel();
jpRed = new JPanel();
jpGreen = new JPanel();
jpBlue = new JPanel();
jpChanging = new JPanel();
// Adds upper/lowerBase to Container
cp.add(upperBase);
cp.add(lowerBase);
// Sets Layout for upper/lowerBase
upperBase.setLayout(new GridLayout(1,3));
lowerBase.setLayout(new GridLayout(1,1));
// Sets Color for jpRed/Green/Blue
jpRed.setBackground(Color.RED);
jpGreen.setBackground(Color.GREEN);
jpBlue.setBackground(Color.BLUE);
jpChanging.setBackground(Color.BLACK);
// Adds jpRed/Green/Blue to upperBase & adds jpChanging to lowerBase
upperBase.add(jpRed);
upperBase.add(jpGreen);
upperBase.add(jpBlue);
lowerBase.add(jpChanging);
// Setup for Red JPanel (jpRed)
jLRed = new JLabel("Red");
jtf_red = new JTextField("0", 10);
rP = new JButton("+");
rM = new JButton("-");
rP.addActionListener(this);
rM.addActionListener(this);
rP.setPreferredSize(new Dimension(25, 25));
rM.setPreferredSize(new Dimension(25, 25));
jpRed.add(jLRed);
jpRed.add(rP);
jpRed.add(jtf_red);
jpRed.add(rM);
// Setup for Green JPanel (jpGreen)
jLGreen = new JLabel("Green");
jtf_green = new JTextField("0", 10);
gP = new JButton("+");
gM = new JButton("-");
gP.addActionListener(this);
gM.addActionListener(this);
gP.setPreferredSize(new Dimension(25, 25));
gM.setPreferredSize(new Dimension(25, 25));
jpGreen.add(jLGreen);
jpGreen.add(gP);
jpGreen.add(jtf_green);
jpGreen.add(gM);
// Setup for Blue JPanel (jpBlue)
jLBlue = new JLabel("Blue");
jtf_blue = new JTextField("0", 10);
bP = new JButton("+");
bM = new JButton("-");
bP.addActionListener(this);
bM.addActionListener(this);
bP.setPreferredSize(new Dimension(25, 25));
bM.setPreferredSize(new Dimension(25, 25));
jpBlue.add(jLBlue);
jpBlue.add(bP);
jpBlue.add(jtf_blue);
jpBlue.add(bM);
// Visibility
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
int red = Integer.parseInt(jtf_red.getText());
int green = Integer.parseInt(jtf_green.getText());
int blue = Integer.parseInt(jtf_blue.getText());
// PLUS & MINUS, NO DECREMENTS PAST 0 and INCREMENTS PAST 255
if(e.getSource() == rP)
{
red++;
jtf_red.setText("" + red);
if (red > 255)
{
jtf_red.setText("" + 255);
}
}
else if(e.getSource() == rM)
{
red--;
jtf_red.setText("" + red);
if (red < 0)
{
jtf_red.setText("" + 0);
}
}
if(e.getSource() == gP)
{
green++;
jtf_green.setText("" + green);
if (green > 255)
{
jtf_green.setText("" + 255);
}
}
else if(e.getSource() == gM)
{
green--;
jtf_green.setText("" + green);
if (green < 0)
{
jtf_green.setText("" + 0);
}
}
if(e.getSource() == bP)
{
blue++;
jtf_blue.setText("" + blue);
if (blue > 255)
{
jtf_blue.setText("" + 255);
}
}
else if(e.getSource() == bM)
{
blue--;
jtf_blue.setText("" + blue);
if (blue < 0)
{
jtf_blue.setText("" + 0);
}
}
// LIMITS (0-255)
if (red < 0)
{
jtf_red.setText("" + 0);
}
else if (red > 255)
{
jtf_red.setText("" + 255);
}
if (green < 0)
{
jtf_green.setText("" + 0);
}
else if (green > 255)
{
jtf_green.setText("" + 255);
}
if (blue < 0)
{
jtf_blue.setText("" + 0);
}
else if (blue > 255)
{
jtf_blue.setText("" + 255);
}
jpChanging.setBackground(new Color(red, green, blue));
}
}
任何帮助将不胜感激!
如果需要更多上下文/说明,我已附上我的作业guidelines。以及程序应该是什么look like(我的程序看起来很像,我更担心功能而不是程序看起来完全一样)。
这是我第一次发帖,所以我希望我做的一切都是正确的!感谢您的宝贵时间!
【问题讨论】:
标签: java jpanel jtextfield rgb