gpt4 book ai didi

java - 我的 JSlider 和下面的文本之间有巨大的空间

转载 作者:行者123 更新时间:2023-12-01 19:04:43 27 4
gpt4 key购买 nike

我目前正在开发一个 Java 媒体播放器,借助 VLCJ 的强大功能,我正在致力于实现均衡器调整窗口。将有 11 个垂直 slider ,其下方有一个 JLabel,指示 hZ 频段和频段的 dB 级别。然而, slider 不断在其自身和 JLabel 之间添加巨大的间隙。我尝试将两个 JLabel 堆叠在一起,几乎没有间隙。我的代码如下。 (返回均衡器的东西还没有实现。我只想在开始添加功能之前有一个基本的 UI 工作)

import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;

import uk.co.caprica.vlcj.player.Equalizer;

public class VideoEQFrame {

public VideoEQFrame() {
//constructor
}

public Equalizer show() {
JFrame frame = new JFrame("Effects");

JPanel panel = new JPanel();

JPanel sliders= new JPanel();

JPanel gainObjects = new JPanel(new GridLayout(2, 0, 2, 0));
JSlider gainS = new JSlider(JSlider.VERTICAL, -12, 12, 0);

gainS.setMajorTickSpacing(2);
gainS.setPaintTicks(true);
gainS.setToolTipText("Adjust the gain");
JLabel gainL = new JLabel("Text");
gainObjects.add(gainS);
gainObjects.add(gainL);
sliders.add(gainObjects);

panel.add(sliders);

frame.add(panel);
frame.setSize(new Dimension(600, 300));
//frame.setResizable(false);
frame.setVisible(true);

Equalizer eq = new Equalizer(0);
return eq;
}

}

最佳答案

您正在使用GridLayout来放置 slider 和文本标签。这意味着它们将占据相同的高度。因此,由于 slider 的高度较大,标签的高度也会调整为该高度。尝试使用另一个 LayoutManager 例如 BorderLayout,如下所示:

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;

public class VideoEQFrame {

public VideoEQFrame() {
//constructor
}

public void show() {
JFrame frame = new JFrame("Effects");

JPanel panel = new JPanel();

JPanel sliders= new JPanel();

JPanel gainObjects = new JPanel(new BorderLayout());
JSlider gainS = new JSlider(JSlider.VERTICAL, -12, 12, 0);

gainS.setMajorTickSpacing(2);
gainS.setPaintTicks(true);
gainS.setToolTipText("Adjust the gain");
JLabel gainL = new JLabel("Text");
gainObjects.add(gainS, BorderLayout.CENTER);
gainObjects.add(gainL, BorderLayout.PAGE_END);
sliders.add(gainObjects);

panel.add(sliders);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
//frame.setResizable(false);
frame.setVisible(true);

// Equalizer eq = new Equalizer(0);
// return eq;
}

public static void main(final String[] args) {
new VideoEQFrame().show();
}
}

关于java - 我的 JSlider 和下面的文本之间有巨大的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59581855/

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