【问题标题】:The labels of a slider don't show滑块的标签不显示
【发布时间】:2018-09-03 07:03:37
【问题描述】:

这个问题快把我逼疯了!

当我使用setLabelTablesetPaintLabels 显示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());

    }
}

【问题讨论】:

  • 确切的问题是什么?您能否详细介绍一下您所说的“炸毁”是什么意思?
  • 当然。我使用带有一行和两列的 gridLayout。在第一列中我放置了一个面板,在第二列中我想放置滑块。如果我在没有标签的情况下放置它,一切正常,但如果我想显示滑块的标签,就会发生奇怪的事情:有时布局是空的,有时所有空间都被第一个面板占用!
  • (我在帖子中添加了生成布局并使用滑块的代码)
  • OK:经过测试、尝试、研究,我解决了这个问题!
  • @paolo marongiu,请告诉我你是怎么解决的?

标签: java swing jslider


【解决方案1】:

经过测试、尝试、研究,我解决了这个问题! 我已删除说明:

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

在 Finestra 类中。我将它们替换为:

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

最后我补充说:

this.pack(); 

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-08-09
  • 2021-09-13
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
相关资源
最近更新 更多