我想使用Vertical JSlider,但只显示滑块拇指(不是 轨道,刻度,标签)。按下拇指后,将显示隐藏的属性。 也许是混淆解释我的想法,就像按下JComboBox的arrowButton并展开JComboBox(下拉列表)。
一些例子。
我不知道从哪里开始,有些线索?
如何在选择旋钮时隐藏JSlider的所有背景并显示?
我正在阅读JComboBox,ComboBoxEditor,BasicComboBoxEditor ......
http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizingaJSliderLookandFeel.htm
Painting the slider icon of JSlider
how to put an image over jslider's knob image when mouse is present over the knob's image
这是我的代码:
JPanel jpEmpty = new JPanel();
jpEmpty.setLayout(new BoxLayout(jpEmpty, BoxLayout.LINE_AXIS));
JSlider sliderEmpty = new JSlider(SwingConstants.VERTICAL);
sliderEmpty.addMouseListener(new MouseInputListener() {
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("mouseDragged(x:" + e.getX() + " , y:"+ e.getY() + ")");
}
@Override
public void mousePressed(MouseEvent e) {
sliderEmpty.setPaintTrack(true);
System.out.println("mousePressed(x:" + e.getX() + " , y:"+ e.getY() + ")");
}
@Override
public void mouseReleased(MouseEvent e) {
sliderEmpty.setPaintTrack(false);
System.out.println("mouseReleased(x:" + e.getX() + " , y:"+ e.getY() + ")");
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
});
jpEmpty.add(sliderEmpty);
jPanel1.setLayout(new BoxLayout(jPanel1, BoxLayout.PAGE_AXIS));
jPanel1.add(Box.createRigidArea(new Dimension(0,5)));
jPanel1.add(jpEmpty);
jPanel1.add(Box.createRigidArea(new Dimension(0,5)));
setLayout(new BorderLayout());
add(jPanel1);
pack();
validate();
替代选项以恐怖的方式更改JSlider尺寸!
JSlider slideResize = new JSlider(SwingConstants.VERTICAL);
int thumbHeight = UIManager.getLookAndFeelDefaults().getInt("Slider.thumbHeight");
int thumbWidth = UIManager.getLookAndFeelDefaults().getInt("Slider.thumbWidth");
Dimension newResizeDim = new Dimension(thumbWidth, thumbHeight);//Size For Released Knob/Thumb
Dimension oldResizeDim = ((BasicSliderUI)slideResize.getUI()).getPreferredVerticalSize();//Size For Pressed Knob/Thumb
slideResize.setPreferredSize(new Dimension(thumbWidth, thumbHeight));//Change to Small size by Default
slideResize.addMouseListener(new MouseInputListener() {
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("mouseDragged(x:" + e.getX() + " , y:"+ e.getY() + ")");
}
@Override
public void mousePressed(MouseEvent e) {
slideResize.setPreferredSize(oldResizeDim);
System.out.println("mousePressed(x:" + e.getX() + " , y:"+ e.getY() + ")");
}
@Override
public void mouseReleased(MouseEvent e) {
slideResize.setPreferredSize(newResizeDim);
System.out.println("mouseReleased(x:" + e.getX() + " , y:"+ e.getY() + ")");
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
});
setLayout(new BorderLayout());
add(slideResize);
pack();
validate();
问题是它实际上没有调整大小
第3。但是如何实现像JComboBox超越(从边界突出)限制JFrame的行为?