java - 实现 Java gui slider 时出现运行时错误

标签 java swing user-interface runtime-error jslider

我第一次在这里发帖提问。来这里有一段时间了,很喜欢阅读这些帖子。希望这里有人可以帮助我完成我一直在做的学习 Java 的程序。该程序调用实现 slider 来更改 GUI 背景中的背景颜色。它编译得很好,但是当我运行它时,我收到一些错误,我在代码末尾注释了这些错误。

代码如下:

import java.awt.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.*;


public class sliderDemo extends JFrame
{
private JSlider redSlider, greenSlider, blueSlider;
private JPanel labels, sliders, colors;
private JLabel redlabel,greenlabel, bluelabel, colorlabel; 
JTextArea colorPanel;

public sliderDemo()
{
setTitle("Slider Excercise");
setLayout(new BorderLayout(5, 5));

ChangeListener event = new eventListener();

colorlabel = new JLabel("Sliders to change colors:");
redlabel = new JLabel("Red slider");
greenlabel = new JLabel("Green slider");
bluelabel = new JLabel("Blue slider");

labels = new JPanel();
labels.setLayout(new GridLayout(3,1));
labels.add(redlabel);
labels.add(greenlabel);
labels.add(bluelabel);

redSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
redSlider.addChangeListener(event);
redSlider.setMaximum(255);
redSlider.setPaintLabels(true);
redSlider.setPaintTicks(true);
redSlider.setMajorTickSpacing(25);
redSlider.setMinorTickSpacing(5);
redSlider.setPaintTrack(false);

greenSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
greenSlider.addChangeListener(event);
greenSlider.setMaximum(255);
greenSlider.setPaintLabels(true);
greenSlider.setPaintTicks(true);
greenSlider.setMajorTickSpacing(25);
greenSlider.setMinorTickSpacing(5);
greenSlider.setPaintTrack(false);

blueSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
blueSlider.addChangeListener(event);
blueSlider.setMaximum(255);
blueSlider.setPaintLabels(true);
blueSlider.setPaintTicks(true);
blueSlider.setMajorTickSpacing(25);
blueSlider.setMinorTickSpacing(5);
blueSlider.setPaintTrack(false);

sliders = new JPanel();
sliders.setLayout(new GridLayout(3,1)); 
sliders.add(colorlabel);
sliders.add(redSlider);
sliders.add(greenSlider);
sliders.add(blueSlider);

colorPanel = new JTextArea(10, 10);
colorPanel.setEditable(false);
colorPanel.setBackground(Color.WHITE);

colorPanel.add(sliders, BorderLayout.CENTER);
colorPanel.add(colors, BorderLayout.NORTH);
colorPanel.add(labels, BorderLayout.WEST);

colors = new JPanel(new BorderLayout(5, 5));
colors.add(colorlabel);
colors.add(colorPanel, BorderLayout.NORTH);
}

public static void main(String[] args)
{
JFrame myFrame = new sliderDemo();
myFrame.setSize(500, 500);
myFrame.setVisible(true);
myFrame.setLocationRelativeTo(null);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public class eventListener implements ChangeListener
{
    public void stateChanged(ChangeEvent e)
    {
    int r = redSlider.getValue();
    int g = greenSlider.getValue();
    int b = blueSlider.getValue();
    colorPanel.setBackground(new Color(r, g, b));
    }
}
}

/*
Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1090)
    at java.awt.Container.add(Container.java:966)
    at sliderDemo.<init>(sliderDemo.java:79)
    at sliderDemo.main(sliderDemo.java:89)
Press any key to continue . . .

最佳答案

  1. 添加已初始化的JComponent

  2. 您尝试将 JPanel 颜色 添加到 JTextArea (完全无意义)及其初始化 colors = new JPanel(new BorderLayout(5, 5) ); 位于接下来的代码行

  3. JTextArea colorPanel; 重命名为 JTextArea textArea

  4. 那么你会错过第四个 JPanel,因为 JTextArea colorPanel 被称为 textAreaJTextArea 不是' JPanels 的 t 容器,指定用于用户按键输入

关于java - 实现 Java gui slider 时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20225221/

相关文章:

bundle - 部署-Java应用程序

java - 使用 arrayList 作为 Graphics2d 中的 y 坐标

c - 如何绘制分隔符?

java - 为什么 JRadioButton 没有显示在 JPanel 上?

java - 一个Java模块可以导出一个包,该包的名称是另一个模块中包的子包吗?

java - 如何获取当前 Vaadin 主题名称?

java - 如何退出 ActionListener 中的方法

android - 适配器作为 Activity 的内部类,还是独立的类?

java - JUnit 没有给出关于 "errors"的信息

java - 无法将包装在 JPanel 中的 JButton 添加到 JTable 中