Ярлыки слайдера не отображаются - PullRequest
0 голосов
/ 03 сентября 2018

Эта проблема сводит меня с ума! Когда я использую setLabelTable и setPaintLabels для отображения метки JSlider, Jslider больше не отображается и взрывает макет. Вы можете мне помочь?

это код моего класса "sliderPlayer":

import java.awt.*;
import javax.swing.*;
import java.util.Hashtable;

public class sliderPlayer extends JPanel
{
static final int MIN = 2;
static final int MAX = 300;
static final int INIT = 15;   

// constructor
public sliderPlayer() 
    {
    super(new GridLayout(1,1));
    JSlider slid = new JSlider(JSlider.HORIZONTAL,MIN,MAX,INIT);
    slid.setMajorTickSpacing(MAX/5);
    slid.setMinorTickSpacing(MAX/10);
    slid.setPaintTicks(true);
    slid.setLabelTable(slid.createStandardLabels(10));
    slid.setPaintLabels(true);
    add(slid);
    }       
}

если я уберу строки:

slid.setLabelTable(slid.createStandardLabels(10));
slid.setPaintLabels(true);

работает хорошо, но, конечно, не рисует ярлык!

Это код, который использует ползунок:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.Toolkit;
import javax.swing.*;

public class Finestra extends JFrame
{
public static  int LARGHEZZA;
public static  int ALTEZZA ;
public GridLayout mainLayout;
public JPanel tavolo;
public JPanel panelSlidePlayer;
public Finestra()
    {
    super("il D I L E M M A del PRIGIONIERO");
    this.setVisible(true);

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int W=(int)screenSize.getWidth();
    int H=(int)screenSize.getHeight();
    LARGHEZZA=W-W/5;
    ALTEZZA=H-H/5;
    Rectangle rect=new Rectangle(W/10, H/10,LARGHEZZA, ALTEZZA);
    this.setBounds(rect);
    mainLayout= new GridLayout(1,1); // Layout principale
    this.setLayout(mainLayout);
    tavolo= new JPanel(new GridLayout(2,2));

    getContentPane().add(tavolo);
    getContentPane().add(new sliderPlayer());

    }
}

1 Ответ

0 голосов
/ 06 сентября 2018

После испытаний, попыток, исследований я решил проблему! Я удалил инструкции:

Rectangle rect=new Rectangle(W/10, H/10,LARGHEZZA, ALTEZZA); 
this.setBounds(rect); 

в классе Финестра. Я заменил их на:

this.setPreferredSize(new Dimension(LARGHEZZA,ALTEZZA)); 

и я добавил, в конце концов:

this.pack(); 
...