【发布时间】:2014-09-19 02:11:39
【问题描述】:
我正在尝试创建一个自定义的 JButton。我注意到当我声明类class MyButton extends JButton 时,它工作正常。但是当我将类名更改为private class MyButton 或protect class MyButton 时,Eclipse 显示“非法修饰符”错误。
我知道在一个文件中只能将一个类声明为公共类,但是将其声明为私有类有什么问题?有人可以帮助解释在这种情况下不同的修饰符如何为类工作吗?谢谢!
class MyButton extends JButton {
@Override
protected void paintComponent(Graphics g){
Graphics2D g2d =(Graphics2D)g;
g2d.setColor(new Color(200,50,50,255));
g2d.fill(new RoundRectangle2D.Float(0,0,getWidth(),getHeight(),100,100));
}
}
public class CustomButton extends JFrame{
public CustomButton (){
add(new MyButton());
}
public static void main(String[] args) {
CustomButton b = new CustomButton();
b.setVisible(true);
}
}
【问题讨论】:
-
我在您的示例中没有看到内部类...更不用说您的
MyButton中看不到任何文本或图标... -
这不是内部类!内部类应该在父类内部 - 你的
CustomButton类在外部。 -
感谢大家指出这一点!我对那个定义和类修饰符感到困惑。我已经编辑了这个问题。希望它现在读得更好。
-
不,这里仍然看不到内部类...也许你应该看看Classes and Objects, inner classes
-
是的,我的意思是我发现一个文件中的两个类不等于“其中一个是内部类”。我认为内部类是指公共类中的一个私有类。我修改了问题,我想我应该将问题表述为:为什么我们不能在一个文件中声明公共和另一个“私有、受保护”类。
标签: java swing class declaration modifier