gpt4 book ai didi

java - 如何设置 JSlider 的大小?

转载 作者:行者123 更新时间:2023-12-03 04:12:54 25 4
gpt4 key购买 nike

我在网上搜索了此问题的解决方案,但没有找到任何有效的方法。

我在 JPanel 中有一个垂直 JSlider,它使用 GridBagLayout 和 GridBagConstraints 来定位面板上的对象。

目前我有以下代码:

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

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

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

对象沿着面板垂直放置。

slider 始终以相同的尺寸(长度)显示。尝试使用 setPreferredSize - 不起作用。尝试使用 gridheight 来滑动两行 - 也不起作用。尝试更改 slider 的实际最小值和最大值,但没有帮助。

GridBagLayout 不应该尊重首选大小吗?

编辑:还尝试在主 JPanel 内创建另一个 JPanel,将其布局设置为 FlowLayout、BoxLayout 或 GridLayout,并向其添加 slider 。没有改变任何事情。很奇怪。

有什么想法吗?

最佳答案

使用不同的布局管理器(或者将 slider 放入具有不同布局管理器的嵌套 JPanel 中),这将拉伸(stretch) JSlider 。在示例中我使用 BorderLayout

enter image description here

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());
}
});
}
}
<小时/>

编辑您的代码示例

enter image description here

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());
}
});
}
}

关于java - 如何设置 JSlider 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com