2013-11-03 68 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

所以事實證明,我一直在使用正確的代碼。不太清楚它是如何發生的,或者爲什麼,但是我的代碼試圖從這個程序的另一個實例運行代碼。當我刪除另一個實例時,它完美地工作。如果你有答案,爲什麼發生這種情況,把它放在我身上。非常困惑。