0

这更像是一个包/导入测试。我们将从位于 .../javaf/test.java 的基本文件夹开始

我的目标是创建子类别并创建一个带有按钮的类,当我需要按钮时可以将其导入 test.java。我觉得我做对了,我知道按钮现在没有做任何事情,但我只想让整个事情工作并在之后扩展代码。所以这里 - 这是test.java

import paket.*;  // importing classes from subcategory paket!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;


public class test {

    public test() {
        JFrame myFrame;
        JPanel myPanel;
        myFrame = new JFrame("Hello FramWorld");
        myPanel = new JPanel();

        // Here I want to add the object created in paket/myButts.java
        // The problem is how to make these two lines work.
        myButts myButton = new myButts();
        myPanel.add(myButton);


        myFrame.setVisible(true);
        myFrame.getContentPane().add(myPanel, BorderLayout.CENTER);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.pack(); 
    }

    public static void main(String args[]) {
        new test();
    }
}

这是我的 .../javaf/paket/myButts.java

package paket; // Here is the package function (ought to work like a link)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

// This class should only create a button.

public class myButts {  
    public myButts() {
        JButton myButt = new JButton();
    }
}

我已经编译 myButts.java 没有错误。但是后来我编译了 test.java,它给了我以下错误:

test.java:19:找不到符号符号:方法 add(paket.myButts) 位置:类 javax.swing.JPanel myPanel.add(myButton);

感谢阅读,Z

4

2 回答 2

1

我想你想要:

public class myButts extends JButton {  

}

如果要将类的实例直接添加到 Swing 控件,它必须扩展 Swing 或 AWT 类型(在本例中为 JButton)。

之前,您只是在构造函数中创建了一个本地 JButton,它在其他任何地方都未使用且无法访问。

请注意,最好尝试遵循Java 样式指南,尤其是命名约定。类建议大小写混合,例如 MyButton。

于 2010-04-09T23:24:44.703 回答
0

错误是:

test.java:19: cannot find symbol symbol : method add(paket.myButts) location: class javax.swing.JPanel myPanel.add(myButton);

这意味着 JPanel 类没有addpaket.myButts参数的方法。让我们看一下JPanel 文档,看看add它有哪些方法。从 Container 继承的方法有 5 个add,从 Component 继承的方法有 1 个。与大多数方法一样,此方法要求您传递一个 Component 对象。这需要您传递一个 PopupMenu 对象。

因此,您的 paket.myButts 对象似乎不是 Component 或 PopupMenu,并且需要。让您的 myButts 扩展组件可能很诱人。所以看看Component 文档,看看你会得到什么。请注意,已经提供了几个子类:

按钮、画布、复选框、选择、容器、标签、列表、滚动条、TextComponent

现在既然你真的想要一个按钮,你可能会猜到 myButts 扩展 Button 是有意义的。这会起作用,你会得到一个awt.Button。但是,如果您进一步探索,Container 的一些子类是swing类,包括 JButton。我会推荐使用这些摇摆课程。

一旦你这样做了,你的构造函数应该采用这种形式:

public class myButts extends JButton {  
  public myButts() {
    super();
    // here put any myButts-specific construction code, such as:
    setText("Press me!");
  }
}

对于使用 Swing 组件的更一般的介绍,我强烈推荐优秀的Swing 教程

于 2010-04-09T23:50:17.000 回答