java - JSlider getX(), getY() JApplet

标签 java user-interface applet components init

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/

相关文章:

javah 帮助 - "No classes were specified on the command line"

java - 如何在 Grails 或 Hibernate 中缩短它

user-interface - 如何从 Flutter 中的 ToggleButtons 中删除空间并使其滚动

java - 将文件从 Javascript 传递到 Java Uploader Applet

java - 在 Openshift 上将 Tomcat 链接到 MYSQL

java - 滚动 Pane 中所有复选框的操作监听器?

MATLAB:为图中的数据光标永久设置 "Text Update Function"

java - 客户端套接字创建在 jdk1.8.0_25 上挂起

java - 如何使用 Java Applet 连接到 AWS EC2 上的 mysql 服务器?

java - 解析直播广播的 RTSP 流