【问题标题】:why casting to (LayoutManager) needed to setLayout?为什么投射到 (LayoutManager) 需要 setLayout?
【发布时间】:2014-03-31 14:53:48
【问题描述】:

我正在学习在 GUI 中定位对象的不同方法,但我真的不明白为什么必须强制转换为 LayoutManager 才能使用 setLayout 方法。 是否有必要实现LayoutManager 接口才能正常工作?

public class FlowL extends JApplet{

   public void init(){

         // why is the cast necessary ?  
        // an error occurs when  its   setLayout(new FlowLayout());    
        setLayout((LayoutManager) new FlowLayout());


 }

}

【问题讨论】:

  • 你在同一个包中是否有另一个你定义为FlowLayout(作为练习或其他东西)的类?
  • 不,FlowLayout 不是已经定义了吗?我所做的就是开始添加对象?例如:setLayout(new FlowLayout());add(new Button("myButton"));
  • “定义”,意思是“命名”。我看到您将 this 类命名为 FlowL,所以这就是我问的原因。也许您创建了另一个名为FlowLayout 的类。如果你这样做了,那是你的问题。否则我想不出其他原因。
  • 即使错误消失了我也得到了一个错误..java.lang.ClassCastException: flowLayout.FlowLayout cannot be cast to java.awt.LayoutManager
  • mm 好的,不只是这个类..

标签: java swing layout-manager flowlayout


【解决方案1】:

“即使错误消失,我也会收到错误.. java.lang.ClassCastException: flowLayout.FlowLayout 不能转换为 java.awt.LayoutManager

没有标准的 Java 类 flowLayout.FlowLayout。那是 你的 类(或者可能是一些不扩展 LayoutManager 的第三方类,我非常怀疑)。

你需要导入

import java.awt.FlowLayout;

摆脱你的

import flowLayout.FlowLayout; // if you have that.

  • 要吸取的教训:不要将您的类命名为与现有 Java 类相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多