[英]The labels of a slider don't show
這個問題快把我逼瘋了!
當我使用setLabelTable
和setPaintLabels
來顯示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());
}
}
經過測試、嘗試、研究,我解決了問題! 我已經刪除了說明:
Rectangle rect=new Rectangle(W/10, H/10,LARGHEZZA, ALTEZZA);
this.setBounds(rect);
在 Finestra 班級中。 我將它們替換為:
this.setPreferredSize(new Dimension(LARGHEZZA,ALTEZZA));
最后我補充說:
this.pack();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.