JavaJSlider.getvalue将正确的值返回给JTextField,将错误的值返回给toolTipText
我使用NetBeans 7.2 在我的JavaJSlider.getvalue将正确的值返回给JTextField,将错误的值返回给toolTipText,java,swing,jtextfield,jslider,Java,Swing,Jtextfield,Jslider,我使用NetBeans 7.2 在我的JPanel1中有一个JSlider滑块\u random,输入值100,最小值0,最大值1000。我通过属性(自定义代码)为slider\u random设置toolTipText: 我的问题是当我启动程序并指向它显示的滑块时: 范围(0-1000) 目前:50 然后稍微移动滑块,并移回原始位置(同时我可以看到text\u current中的更改)所有数据都变为正确,工具提示显示: 范围(0-1000) 电流:100 什么会导致我的问题 我可以重新编写您的
JPanel1
中有一个JSlider滑块\u random
,输入值100
,最小值0
,最大值1000
。我通过属性(自定义代码)为slider\u random
设置toolTipText
:
我的问题是当我启动程序并指向它显示的滑块时:
范围(0-1000)
目前:50
然后稍微移动滑块,并移回原始位置(同时我可以看到text\u current
中的更改)所有数据都变为正确,工具提示显示:
范围(0-1000)
电流:100
什么会导致我的问题
我可以重新编写您的问题 问题是jSlider的默认值是50。您将该值修改为100,但这并没有反映在jSlider的setToolTip()方法中,您可以通过自定义代码访问jSlider的值。它将显示旧值50 要纠正这一点,一种解决方案是在滑块上创建鼠标悬停事件,这样当您运行应用程序并将鼠标指针悬停在滑块上时,jToolTip方法会拾取最新的值并显示相同的值。它对我有用,所以我相信它对你也有用
如果我能想出一个更好的解决方案,我会发布同样的 我可以重新编写您的问题 问题是jSlider的默认值是50。您将该值修改为100,但这并没有反映在jSlider的setToolTip()方法中,您可以通过自定义代码访问jSlider的值。它将显示旧值50 要纠正这一点,一种解决方案是在滑块上创建鼠标悬停事件,这样当您运行应用程序并将鼠标指针悬停在滑块上时,jToolTip方法会拾取最新的值并显示相同的值。它对我有用,所以我相信它对你也有用
如果我能想出一个更好的解决方案,我会发布同样的 可能在滑块的值已经设置好之后添加侦听器。您可能需要更改订单。或者,为了解决初始化问题,可能需要在初始化滑块后显式设置工具提示 作为替代方案,您可以将
JSlider
子类化并覆盖getToolTipText
,例如:
JSlider slider = new JSlider() {
public String getToolTipText(MouseEvent e) {
return "<html>Range (0-" + String.valueOf(getMaximum()) + ")<br>Current: " + String.valueOf(getValue());
}
};
JSlider slider=new JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+String.valueOf(getmax())+”
当前:“+String.valueOf(getValue())”;
}
};
下面是一个简短的演示:
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JSlider;
public class TestSlider {
public static void main(String[] args) {
JFrame frame = new JFrame("TestSlider");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JSlider slider = new JSlider() {
public String getToolTipText(MouseEvent e) {
return "<html>Range (0-" + String.valueOf(getMaximum())
+ ")<br>Current: " + String.valueOf(getValue());
}
};
slider.setToolTipText("");
frame.add(slider);
((JComponent) frame.getContentPane()).setBorder(BorderFactory
.createEmptyBorder(10, 10, 10, 10));
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
}
import java.awt.event.MouseEvent;
导入javax.swing.BorderFactory;
导入javax.swing.JComponent;
导入javax.swing.JFrame;
导入javax.swing.JSlider;
公共类测试滑块{
公共静态void main(字符串[]args){
JFrame=新JFrame(“测试滑块”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JSlider slider=新的JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+字符串.valueOf(getMaximum())
+“”
当前:“+String.valueOf(getValue());
}
};
slider.setToolTiptText(“”);
frame.add(滑块);
((JComponent)frame.getContentPane()).setOrder(BorderFactory)
.createEmptyByOrder(10,10,10,10));
frame.setLocationByPlatform(真);
frame.pack();
frame.setVisible(true);
}
}
可能在滑块的值已设置之后添加侦听器。您可能需要更改订单。或者,为了解决初始化问题,可能需要在初始化滑块后显式设置工具提示
作为替代方案,您可以将JSlider
子类化并覆盖getToolTipText
,例如:
JSlider slider = new JSlider() {
public String getToolTipText(MouseEvent e) {
return "<html>Range (0-" + String.valueOf(getMaximum()) + ")<br>Current: " + String.valueOf(getValue());
}
};
JSlider slider=new JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+String.valueOf(getmax())+”
当前:“+String.valueOf(getValue())”;
}
};
下面是一个简短的演示:
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JSlider;
public class TestSlider {
public static void main(String[] args) {
JFrame frame = new JFrame("TestSlider");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JSlider slider = new JSlider() {
public String getToolTipText(MouseEvent e) {
return "<html>Range (0-" + String.valueOf(getMaximum())
+ ")<br>Current: " + String.valueOf(getValue());
}
};
slider.setToolTipText("");
frame.add(slider);
((JComponent) frame.getContentPane()).setBorder(BorderFactory
.createEmptyBorder(10, 10, 10, 10));
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
}
import java.awt.event.MouseEvent;
导入javax.swing.BorderFactory;
导入javax.swing.JComponent;
导入javax.swing.JFrame;
导入javax.swing.JSlider;
公共类测试滑块{
公共静态void main(字符串[]args){
JFrame=新JFrame(“测试滑块”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JSlider slider=新的JSlider(){
公共字符串getToolTipText(MouseEvent e){
返回“范围(0-”+字符串.valueOf(getMaximum())
+“”
当前:“+String.valueOf(getValue());
}
};
slider.setToolTiptText(“”);
frame.add(滑块);
((JComponent)frame.getContentPane()).setOrder(BorderFactory)
.createEmptyByOrder(10,10,10,10));
frame.setLocationByPlatform(真);
frame.pack();
frame.setVisible(true);
}
}
我认为执行此操作的最佳方法是在滑块附近放置一个标签,然后将一个变量(如整数)替换为“y”,或将get值替换为“y”,这需要的事件是项目状态更改,因此当您移动滑块时,标签将随滑块一起移动,并将显示值;)
}我认为执行此操作的最佳方法是在滑块附近放置一个标签,然后将一个变量(如整数)替换为“y”,或将get值替换为“y”,这需要的事件是项目状态更改,因此当您移动滑块时,标签将随滑块一起移动,并将显示值;)
}控制台中是否存在任何异常?你能发布密码吗?@Attila我能重新编写你的问题。将查看是否找到解决方案。@Dan未显示任何异常,当然在生成过程中有0个警告和0个错误。控制台中有任何异常吗?你能发布密码吗?@Attila我能重新编写你的问题。我来看看我能不能
public class Slidebar extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Slidebar frame = new Slidebar();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Slidebar() {
setResizable(false);
setTitle("SlideBar With Text Move");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 317, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
final JSlider slider = new JSlider();
slider.setPaintLabels(true);
slider.setOrientation(SwingConstants.VERTICAL);
slider.setValue(0);
slider.setBounds(131, 60, 53, 136);
contentPane.add(slider);
final JLabel lblNewLabel = new JLabel("");
int y = 165;
lblNewLabel.setBounds(111, 173, 41, 30);
contentPane.add(lblNewLabel);
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
int y=165;
lblNewLabel.setBounds(111, y-(slider.getValue())-5, 41, 30);
lblNewLabel.setText(slider.getValue()+"");
}
});
}