gpt4 book ai didi

java - JSlider 不在空布局 JPanel 上绘制

转载 作者:行者123 更新时间:2023-11-30 07:27:25 25 4
gpt4 key购买 nike

我有一个布局为空的 JPanel,我正在尝试添加一个 JSlider:

        slider = new JSlider();


slider.setSize(300,30);
slider.setPreferredSize(new Dimension(300,30));
int x = (Constants.getScreenWidth()/2)-(slider.getWidth()/2);
int y = (Constants.getScreenHeight()/2)-(slider.getHeight()/2);
y = y - 100;
slider.setLocation(x,y);
slider.setBounds(x-(slider.getWidth()/2),y-(slider.getHeight()/2),300,30);


add(slider);

但是 slider 没有显示。我已经打印了 slider ,它是:

javax.swing.JSlider[,420,320,300x30,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=288,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=300,height=30],isInverted=false,majorTickSpacing=0,minorTickSpacing=0,orientation=HORIZONTAL,paintLabels=false,paintTicks=false,paintTrack=true,snapToTicks=false,snapToValue=true]

为什么我看不到 slider ?

最佳答案

  • 删除 slider.setLayout(null); 您为 setLayout(null); 设置的父级 JPanel.setLayout(null );

  • 免责声明永远不要使用 AbsoluteLayoutJComponent 放置到 Container

我可以在没有代码行的情况下显示 JSlider

int x = (Constants.getScreenWidth()/2)-(slider.getWidth()/2);
int y = (Constants.getScreenHeight()/2)-(slider.getHeight()/2);
y = y - 100;
slider.setLocation(x,y);
slider.setBounds(x-(slider.getWidth()/2),y-(slider.getHeight()/2),300,30);
  • 使用 InsetsJComponent 放置到 Container

这段代码在屏幕上显示了 JSlider

import javax.swing.*;
import java.awt.*;

public class NullLayoutManagerWithJSlider extends JFrame {

private JFrame frame = new JFrame();
private static final long serialVersionUID = 1L;

public NullLayoutManagerWithJSlider() {
JSlider slider = new JSlider();
slider.setPreferredSize(new Dimension(300, 30));
frame.setLayout(null);
frame.add(slider);

Insets mmInsets = frame.getInsets();
Dimension sizeMmInn = null;
slider.setPreferredSize(new Dimension(300, 30));
sizeMmInn = slider.getPreferredSize();
slider.setBounds(20 + mmInsets.left, 16 + mmInsets.top, sizeMmInn.width, sizeMmInn.height);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(100, 100);
frame.setSize(new Dimension(600, 400));
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
NullLayoutManagerWithJSlider cf = new NullLayoutManagerWithJSlider();
}
});
}
}

关于java - JSlider 不在空布局 JPanel 上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726736/

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