1

我正在尝试制作一个具有由 JSlider 直接修改的 JLabel 的 Java 程序。我已经完成了所有的漂亮,但我无法让字体在 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);
    }
}
4

2 回答 2

5

您是否将 ChangeListener 添加到滑块?

pixel.addChangeListener( new SliderHandler() );
于 2013-11-03T05:10:16.417 回答
1

所以事实证明我一直在使用正确的代码。不太清楚它是如何发生的,或者为什么发生,但我的代码试图从该程序的另一个实例运行代码。当我删除另一个实例时,它运行良好。如果您对为什么会发生这种情况有答案,请告诉我。很困惑。

于 2013-11-03T17:28:53.973 回答