Java:使用JSlider的构造函数
我正在尝试用Java构建一个面板。面板应该(除其他外)有一个滑块/JSlider 下面是我的JSlider的类文件。我想使用构造函数来设置滑块的选项 我尝试使用字符串hOrV(水平或垂直)将滑块设置为JSlider.horizone。这似乎不起作用(参数接受int,而不是字符串) 事实上,当我在另一个类中调用构造函数时,它的任何部分似乎都不起作用 所有参数似乎都没有传递给构造函数,有人能帮忙吗?谢谢你Java:使用JSlider的构造函数,java,constructor,Java,Constructor,我正在尝试用Java构建一个面板。面板应该(除其他外)有一个滑块/JSlider 下面是我的JSlider的类文件。我想使用构造函数来设置滑块的选项 我尝试使用字符串hOrV(水平或垂直)将滑块设置为JSlider.horizone。这似乎不起作用(参数接受int,而不是字符串) 事实上,当我在另一个类中调用构造函数时,它的任何部分似乎都不起作用 所有参数似乎都没有传递给构造函数,有人能帮忙吗?谢谢你 import javax.swing.*; import javax.swing.event.
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
非常感谢您的快速回答@格雷戈,如果这个答案对你有用,那么考虑一下投票,并把它标记为正确的,以便将来的访问者知道这个问题是正确的。我是新来的,所以我的投票结果是不可见的,但你可以打赌,我非常感谢你的回应@格雷格,我很乐意帮忙。