gpt4 book ai didi

java - JSlider getX(), getY() JApplet

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:06 25 4
gpt4 key购买 nike

GUI 组件的位置、宽度和高度何时设置?如果使用布局管理器,这些字段会受到怎样的影响?我有一个包含两个 slider 的面板,我想在其中一个 slider 旁边绘制一个矩形。下面是我的代码,用于初始化 GUI 组件并用 slider 之一旁边的矩形绘制它们:

public PhotoSliders() 
{
initComponents(); //from the netbeans GUI designer
}

public void setColorRect() //initialize a colored rectangle
{
colorRect = new ColorRect(Color.RED, (double)(emSlider.getX())/getWidth(), (double)(emSlider.getY())/getHeight());
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);

colorRect.paintColorRect(g, getWidth(), getHeight());
}

我发现emSlider.getX()、emSlider.getY()、getWidth()和getHeight()最初都是0。当我调整小程序的大小并导致它被重新绘制时,字段不再为零。为什么它们最初都为零?这是我的小程序类中的代码:

public void init()                               //initialize the Applet Class
{
setLayout(new BorderLayout());
slidersPanel = new PhotoSliders();
JPanel north = new JPanel(new BorderLayout());

north.add(slidersPanel, BorderLayout.WEST);
add(north, BorderLayout.NORTH);
add(photoEffect, BorderLayout.CENTER);

slidersPanel.setColorRect();

}

   public void paint(Graphics g)                   //paint the photoEffect
{
super.paint(g);
slidersPanel.setColorRect();
}

最佳答案

组件的位置和大小在 GUI 呈现时设置,在此之前它们是默认值 0。对于桌面应用程序,当在顶级窗口上调用 pack() 时,或者在顶级窗口上调用 setVisible(true) 时,或者在组件本身(如果在渲染完成后将其添加到 GUI)时,会发生这种情况。

如果它是一个小程序,那么就是渲染该小程序的时候——这是在幕后完成的事情。您可以使用 Swing 监听器之一来监听此内容。我必须查找哪一个,可能是 AncestorListener ....编辑,是的,我认为这是正确的,尝试使用 AncestorListener。

考虑购买Filthy Rich Clients这是一本深入探讨 Swing 图形的精彩书籍。

关于java - JSlider getX(), getY() JApplet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10730418/

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