Java Jpanel带油漆的内框架

Java Jpanel带油漆的内框架,java,swing,jpanel,2d,Java,Swing,Jpanel,2d,嗨,我是triyng想做这样的事 但我总是得到十字架或在西部顶端,或者它没有出现,也不知道为什么。我试图查看borderLayout和一些stackoverflow解释示例,但没有发现任何相关内容。有人能解释一下我做错了什么,为什么吗 public Base() { super("Menu"); JPanel p = createPanel(); Dimension screen = Toolkit.getDefaultToolkit().getS

嗨,我是triyng想做这样的事

但我总是得到十字架或在西部顶端,或者它没有出现,也不知道为什么。我试图查看borderLayout和一些stackoverflow解释示例,但没有发现任何相关内容。有人能解释一下我做错了什么,为什么吗

public Base() {
        super("Menu");
        JPanel p = createPanel();
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

        setSize(screen.width, screen.height);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        add(p);
    }

    private JPanel createPanel() {
        JPanel P = new JPanel() {
            public void paint(Graphics g) {
                super.paint(g);
                Graphic gr = new Graphicimpl();
                g.drawLine(gr.PositionX(-25.0), gr.PositionY(0.0), gr.PositionX(25.0), gr.PositionY(0.0));
                g.drawLine(gr.PositionX(0.0), gr.PositionY(25.0), gr.PositionX(0.0), gr.PositionY(-25.0));

            }
        };

        //P.setSize(50, 50);
        //P.setBorder(BorderFactory.createEmptyBorder(300, 300, 300, 300));
        return P;
    }
}
public class Graphicimpl implements Graphic{
    int FACTOr_ESCALACION = 10;


    public  int PositionX(Double x) {
        return (int) ((x *  FACTOr_ESCALACION) + 320);
    }

    @Override
    public int PositionY(Double y) {
        return (int) ( - (y * FACTOr_ESCALACION ) +240);
    }


}

public interface Graphic {
    int PositionX(Double x);
    int PositionY(Double y);
}
public class Main {
    public static void main(String args[]) {
        Base base=new Base();
    }

}

十字的位置取决于插入的坐标。因为您是手动插入它们的。你可以用不同的坐标测试程序,直到交叉显示你想要它的位置。

什么是代码>图形IMPL/<代码>?考虑提供一个演示你的问题的A。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应使用
JFrame#setExtendedSize
如果您想将窗口大小调整到屏幕的全可视区域,或者如果您想覆盖整个屏幕,则使用全屏独占模式,
Toolkit.getDefaultToolkit().getScreenSize()
是个坏主意。创建完整个UIT后,最后调用
setVisible
LAST以了解如何进行自定义绘制请阅读上Swing教程中的部分。下载示例并根据您的需求进行修改。这是从一个工作示例开始的。这也将为您提供更好的结构化代码。