Java:使用JSlider的构造函数

Java:使用JSlider的构造函数,java,constructor,Java,Constructor,我正在尝试用Java构建一个面板。面板应该(除其他外)有一个滑块/JSlider 下面是我的JSlider的类文件。我想使用构造函数来设置滑块的选项 我尝试使用字符串hOrV(水平或垂直)将滑块设置为JSlider.horizone。这似乎不起作用(参数接受int,而不是字符串) 事实上,当我在另一个类中调用构造函数时,它的任何部分似乎都不起作用 所有参数似乎都没有传递给构造函数,有人能帮忙吗?谢谢你 import javax.swing.*; import javax.swing.event.

我正在尝试用Java构建一个面板。面板应该(除其他外)有一个滑块/JSlider

下面是我的JSlider的类文件。我想使用构造函数来设置滑块的选项

我尝试使用字符串hOrV(水平或垂直)将滑块设置为JSlider.horizone。这似乎不起作用(参数接受int,而不是字符串)

事实上,当我在另一个类中调用构造函数时,它的任何部分似乎都不起作用

所有参数似乎都没有传递给构造函数,有人能帮忙吗?谢谢你

import javax.swing.*;
import javax.swing.event.*;

public class ScrollBar extends JSlider
{

private JSlider slider;

public ScrollBar(String hOrV, int min, int max, int start)
{

//slider = new JSlider(JSlider.HORIZONTAL, min, max, start); //didn't work
slider = new JSlider(hOrV, min, max, start);

add(slider);

}


//This is the call in my other class file
slider = new ScrollBar("JSlider.HORIZONTAL", 0, 50, 10);

//I have also tried:
slider = new ScrollBar(0, 50, 10); // with public ScrollBar(int min, int max, int start) as my constructor
slider = new ScrollBar(0, 0, 50, 10); //with public ScrollBar(int hOrV, int min, int max, int start) as my constructor

以下是
JSlider
构造函数的参数,根据:
int-orientation、int-min、int-max、int-value

方向可以是
SwingConstants.VERTICAL
SwingConstants.HORIZONTAL
。请注意,这些是整数,而不是字符串

您有多种选择:

1) 您可以使构造函数如下所示:

public ScrollBar(String hOrV, int min, int max, int start)
{
    slider = new JSlider(hOrV.equals("HORIZONTAL") ?
            SwingConstants.HORIZONTAL : SwingConstants.VERTICAL,
        min, mas, start);
}
new ScrollBar("HORIZONTAL", 0, 50, 10); // or "VERTICAL"
new ScrollBar(SwingConstants.HORIZONTAL, 0, 50, 10); // or SwingConstants.VERTICAL
new Slider(Slider.HORIZONTAL, 0, 50, 10); // or Slider.VERTICAL
然后你可以这样称呼它:

public ScrollBar(String hOrV, int min, int max, int start)
{
    slider = new JSlider(hOrV.equals("HORIZONTAL") ?
            SwingConstants.HORIZONTAL : SwingConstants.VERTICAL,
        min, mas, start);
}
new ScrollBar("HORIZONTAL", 0, 50, 10); // or "VERTICAL"
new ScrollBar(SwingConstants.HORIZONTAL, 0, 50, 10); // or SwingConstants.VERTICAL
new Slider(Slider.HORIZONTAL, 0, 50, 10); // or Slider.VERTICAL
2) 或者,您可以简单地将一个
int
传递给构造函数,并期望构造代码访问正确整数的
SwingConstants

public ScrollBar(int hOrV, int min, int max, int start)
{
    slider = new JSlider(hOrV, min, mas, start);
}
这样称呼:

public ScrollBar(String hOrV, int min, int max, int start)
{
    slider = new JSlider(hOrV.equals("HORIZONTAL") ?
            SwingConstants.HORIZONTAL : SwingConstants.VERTICAL,
        min, mas, start);
}
new ScrollBar("HORIZONTAL", 0, 50, 10); // or "VERTICAL"
new ScrollBar(SwingConstants.HORIZONTAL, 0, 50, 10); // or SwingConstants.VERTICAL
new Slider(Slider.HORIZONTAL, 0, 50, 10); // or Slider.VERTICAL
3) 或者,您可以为水平/垂直设置自己的一对值:

public final int HORIZONTAL = SwingConstants.HORIZONTAL;
public final int VERTICAL = SwingConstants.VERTICAL;
public ScrollBar(int hOrV, int min, int max, int start)
{
    slider = new JSlider(hOrV, min, mas, start);
}
这样称呼:

public ScrollBar(String hOrV, int min, int max, int start)
{
    slider = new JSlider(hOrV.equals("HORIZONTAL") ?
            SwingConstants.HORIZONTAL : SwingConstants.VERTICAL,
        min, mas, start);
}
new ScrollBar("HORIZONTAL", 0, 50, 10); // or "VERTICAL"
new ScrollBar(SwingConstants.HORIZONTAL, 0, 50, 10); // or SwingConstants.VERTICAL
new Slider(Slider.HORIZONTAL, 0, 50, 10); // or Slider.VERTICAL

非常感谢您的快速回答@格雷戈,如果这个答案对你有用,那么考虑一下投票,并把它标记为正确的,以便将来的访问者知道这个问题是正确的。我是新来的,所以我的投票结果是不可见的,但你可以打赌,我非常感谢你的回应@格雷格,我很乐意帮忙。