package Graph;
import java.awt.Graphics;
import java.awt.Polygon;
import javax.swing.JFrame;
import javax.swing.JPanel;
下面是我的班级,涵盖所有其他班级,并扩展了JFrame,它是通过在Netbeans中选择“新建> Java框架”选项创建的。我在名为Graph的程序包中创建了此文件,其文件名为GraphFrame.Java。
public class GraphFrame extends javax.swing.JFrame {
public GraphFrame() {
}
以下几行来自我的JFrame自动创建代码。
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
下面的这些行是我的主要方法
public static void main(String args[]) {
/* Create and display the form */
//java.awt.EventQueue.invokeLater(new Runnable() {
//public void run() {
GraphFrame Frame=new GraphFrame();
Frame.setVisible(true);
Frame.setTitle("Functional Dependency");
Frame.setSize(500, 500);
//}
// });
}
这些行是我在GraphFrame类的内部创建的DrawGraph类。除此之外,它还扩展了我的JPanel,我是通过从Swing容器中拖动JPanel图标来制作的(很抱歉,如果这是添加JPanel的错误方法)
class DrawGraph extends JPanel{
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(10, 100, 380, 100);
g.drawLine(200, 30, 200, 190);
g.drawLine(380, 100, 370, 90);
g.drawLine(380, 100, 370, 110);
g.drawLine(200, 30, 190, 40);
g.drawLine(200, 30, 210, 40);
g.drawString("X", 360, 80);
g.drawString("Y", 220, 40);
}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
我的问题是,我编码的图形线没有出现。我用谷歌搜索,StackOverflowed,浏览了我的实验练习,但似乎找不到解决方案。是的,这可能需要更多阅读,但是老实说,我不太明白是怎么回事。
最佳答案
问题是您永远不会将JPanel添加到创建的框架中。
这应该做您想要的。
public class GraphFrame extends JFrame {
private DrawGraph graph;
public GraphFrame(){
super();
graph = new DrawGraph();
this.add(graph);
}
class DrawGraph extends JPanel{
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(10, 100, 380, 100);
g.drawLine(200, 30, 200, 190);
g.drawLine(380, 100, 370, 90);
g.drawLine(380, 100, 370, 110);
g.drawLine(200, 30, 190, 40);
g.drawLine(200, 30, 210, 40);
g.drawString("X", 360, 80);
g.drawString("Y", 220, 40);
}
}
}
注意,可以调用this.add(graph),因为
GraphFrame
扩展了JFrame。 .add()
方法是JFrame类的一部分,因此可以从GraphFrame
调用您还应该考虑为DrawGraph类创建一个新文件,因为如果您想为
GraphFrame or DrawGraph
添加更多功能,它可能会变得凌乱。