簡體   English   中英

如何設置JSlider的大小?

[英]How to set size of a JSlider?

我已經在網上搜索了此問題的解決方案,但沒有找到任何可行的方法。

我在使用GridBagLayout和GridBagConstraints在面板上放置對象的JPanel中有一個垂直的JSlider。

目前,我有以下代碼:

    gbc.gridy = 1;
    add(button1,gbc);

    gbc.gridy = 2;
    add(button2,gbc);

    gbc.gridy = 3;
    add(slider,gbc);

這些對象沿面板垂直放置。

滑塊始終以相同的大小(長度)出現。 嘗試使用setPreferredSize無效。 試圖使用gridheight來使滑塊gridheight兩行-也不起作用。 試圖更改滑塊的實際最小值和最大值,這沒有幫助。

GridBagLayout不應該尊重首選大小嗎?

編輯:還嘗試在主JPanel中創建注釋器JPanel,將其布局設置為FlowLayout,BoxLayout或GridLayout,然后向其中添加滑塊。 沒有改變任何事情。 很奇怪。

有任何想法嗎?

使用其他布局管理器(或將滑塊與其他布局管理器放在嵌套的JPanel ),這將拉伸 JSlider 在示例中,我使用BorderLayout

在此處輸入圖片說明

import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.SwingUtilities;

public class DifferentSizeSlider extends JPanel{
    public DifferentSizeSlider() {
        JPanel topPanel = new JPanel(new BorderLayout());
        topPanel.add(new JSlider());

        JPanel bottomPanel = new JPanel(new GridLayout(1, 2));
        bottomPanel.add(new JSlider());
        bottomPanel.add(new JPanel());

        setLayout(new GridLayout(2, 1));
        add(topPanel);
        add(bottomPanel);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                JOptionPane.showMessageDialog(null, new DifferentSizeSlider());
            }
        });
    }
}

使用您的代碼示例進行編輯

在此處輸入圖片說明

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.SwingUtilities;

public class DifferentSizeSlider extends JPanel{
    public DifferentSizeSlider() {
        JPanel topPanel = new JPanel(new BorderLayout());
        topPanel.setPreferredSize(new Dimension(400, 50));
        topPanel.add(new JSlider());

        JButton jbtOne = new JButton("Button");
        JButton jbtTwo = new JButton("Button");

        GridBagConstraints gbc = new GridBagConstraints();
        setLayout(new GridBagLayout());

        gbc.gridy = 0;
        add(jbtOne,gbc);  

        gbc.gridy = 1;
        add(jbtTwo,gbc);

        gbc.gridy = 2;
        add(topPanel, gbc);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                JOptionPane.showMessageDialog(null, new DifferentSizeSlider());
            }
        });
    }
}

要更改擺動組件的大小,請使用setPrefferedSize()方法

setPreferredSize(new Dimension(300, 80));

您可能必須使用帶有flowLayout的單獨面板作為滑塊,然后將該面板添加到中。 一些布局管理器可能不會采用首選大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM