所以我想我的主类扩展JFrame和JPanel。我将如何做到这一点?如何在主类中扩展JFrame和JPanel?
例如:
public class mainClass extends JFrame {
//code here
}
我怎么会还扩展JPanel对于同一类?
在此先感谢!
所以我想我的主类扩展JFrame和JPanel。我将如何做到这一点?如何在主类中扩展JFrame和JPanel?
例如:
public class mainClass extends JFrame {
//code here
}
我怎么会还扩展JPanel对于同一类?
在此先感谢!
Java不支持多继承。可能的解决方案包括在扩展JPanel的主类中编写内部类,然后再扩展JFrame的另一个内部类。您也可以编写两个单独的(非内部)类来扩展相应的类,因为这是我使用的常用方法。
你根本不行。 Java不支持多重继承,所以你不能拥有一个扩展两个不同类的类。
而在你的情况下,我不明白你为什么需要一个扩展JFrame
和JPanel
的类,因为它们是用于不同目的的两种不同的东西。
也许你只需要能够在一个类中定义自己的框架和面板?您可以使用以下内部类:
class MainClass {
static class MyFrame extends JFrame {
..
}
static class MyPanel extends JPanel {
..
}
}
所以我想我的主类扩展JFrame和JPanel。我将如何 这样做?
您不能,Java只支持简单继承。
而且在我看来,具体的继承是危险的,如果你不使用“正常”因为你可以打破对象原则和合同(里氏替换原则,单一职责原则),难以维持等
所以真正的问题是为什么你需要延长JFrame
和JPanel
?
你当然可以实现你想用另一种技术做什么。例如,
组成。
public class MyClass{
private JPanel panel;
private JFrame frame;
}
如果你需要覆盖的JPanel例如paintComponent
一些特定的行为,你可以做(匿名类)
{
//in some part
panel = new JPanel(){
@Override
public void paintComponent(Graphics gr){
super.paintComponent(gr);
//your code
}
}
}
或进行内部类
public class MyClass{
private class MyJPanel extends JPanel{
}
}
JFrame和JPanel是类,所以你不能直接同时继承两个类。
首先创建JPanel并将组件添加到它。
然后设置的JPanel来的JFrame(JFrame中包含一个JRootPane作为其唯一的孩子。)
类样品扩展的JFrame {
Sample(){
JPanel content = new JPanel();
conent.add(comp1);
conent.add(comp2);
................. //comp1,comp2 are your JButton or JTextBox or JLabel ...etc..
.................
setContentPane(content);
setVisible(true);
}
public static void main(String[] args) {
}
}
你不能做到这一点。 Jpanel和jframe都是类,而java不支持类的多重继承。只有一个类和许多接口。 –
**请勿**延伸框架或其他顶层容器。而是创建并使用一个实例。只有在添加或更改功能时才能扩展'JPanel'。你在做这些事情吗?如果是这样,具体是什么? –