Java Jpanel带油漆的内框架
嗨,我是triyng想做这样的事 但我总是得到十字架或在西部顶端,或者它没有出现,也不知道为什么。我试图查看borderLayout和一些stackoverflow解释示例,但没有发现任何相关内容。有人能解释一下我做错了什么,为什么吗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
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教程中的部分。下载示例并根据您的需求进行修改。这是从一个工作示例开始的。这也将为您提供更好的结构化代码。