2013-11-03 42 views
0

我正在试图制作一个Java程序,它有一个由JSlider直接修改的JLabel。我得到了所有的美感,但我无法让字体在JLabel上工作。以下是我的代码。JSlider修改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); 
    } 
} 

回答

5

您是否将ChangeListener添加到滑块?

pixel.addChangeListener(new SliderHandler()); 
+0

是的,我做过。但忘了发布它。 –

+0

@CoryMeeks,'忘记发布了 - - 未来发布一个适当的[SSCCE](http://sscce.org/),否则我们浪费时间猜测。 – camickr

0

所以事实证明,我一直在使用正确的代码。不太清楚它是如何发生的,或者为什么,但是我的代码试图从这个程序的另一个实例运行代码。当我删除另一个实例时,它完美地工作。如果你有答案,为什么发生这种情况,把它放在我身上。非常困惑。