我正在尝试编写一个Java程序,该程序具有可由JSlider直接修改的JLabel。我已经完成了所有的美容工作,但我不能让字体在JLabel上工作。下面是我的代码。
int PIX_INIT = 24;
int PIX_MIN = 0;
int PIX_MAX = 100;
JCheckBox text;
JCheckBox slide;
JTextField size;
JSlider pixel;
JLabel label1;
JLabel label2;
//Adds header
JPanel header = new JPanel(new BorderLayout());
header.setBackground(Color.CYAN);
header.setSize(400, 50);
header.setVisible(true);
//Adds content to header
JPanel content = new JPanel();
content.setBackground(Color.CYAN);
label1 = new JLabel("Marker Size: ");
content.add(label1);
size = new JTextField(5);
content.add(size);
label2 = new JLabel(" pixels");
content.add(label2);
header.add(content, BorderLayout.SOUTH);
this.add(header, BorderLayout.CENTER);
//Adds body
JPanel body = new JPanel(new BorderLayout());
body.setBackground(Color.WHITE);
body.setSize(400, 325);
body.setVisible(true);
this.add(body, BorderLayout.CENTER);
//End body
//Creates slider
//Adds slider
pixel = new JSlider(SwingConstants.HORIZONTAL, PIX_MIN, PIX_MAX, PIX_INIT);
pixel.setMajorTickSpacing( 10 );
pixel.setPaintTicks(true);
this.add(pixel, BorderLayout.SOUTH);
//End slider
private class SliderHandler implements ChangeListener {
public void stateChanged(ChangeEvent e) {
pixel = (JSlider)e.getSource();
int scale = pixel.getValue();
Font font = new Font("Serif", Font.PLAIN, scale);
label1.setFont(font);
System.out.println(scale);
}
}发布于 2013-11-03 13:10:16
你把ChangeListener添加到滑块了吗?
pixel.addChangeListener( new SliderHandler() );发布于 2013-11-04 01:28:54
所以事实证明我一直在使用正确的代码。不太确定它是如何发生的,或者为什么会发生,但我的代码试图从该程序的另一个实例运行代码。当我删除另一个实例时,它工作得很好。如果你有关于为什么会发生这种事的答案,请告诉我。非常困惑。
https://stackoverflow.com/questions/19750029
复制相似问题