当我与Jpanel合作时,我看到当Y低于50时,我看不到物体,因为它们隐藏在顶部面板下面。我需要一种隐藏顶部面板的方法,或者每次都不要添加50到Y.在此示例中,隐藏了圆圈的顶部:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class Draw extends JFrame{
public static int Framesize=1000;
public static void main(String []args){
Draw s=new Draw();
s.setVisible(true);
}
public Draw(){
JPanel panel=new JPanel();
setSize(Framesize,Framesize);
setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for (int i=0;i<=1000;i+=50) {
g2.draw(new Line2D.Float(i, 0, i, Framesize));
g2.draw(new Line2D.Float(0, i, Framesize, i));
}
g2.setPaint(Color.RED);
g2.draw(new Ellipse2D.Float(0,0,200,200));
g2.drawString("Test", 100, 150);
}
}
首先,你必须使用你创建的JPanel变量(因为直接在JFrame中绘制并不是一个好习惯,因为它可能会导致你遇到的问题)。以下是面板类的示例:
class panel extends JPanel{
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for (int i = 0; i <= 1000; i += 50) {
g2.draw(new Line2D.Float(i, 0, i, Draw.Framesize));
g2.draw(new Line2D.Float(0, i, Draw.Framesize, i));
}
g2.setPaint(Color.RED);
g2.draw(new Ellipse2D.Float(0, 0, 200, 200));
g2.drawString("Test", 100, 150);
}
}
然后将面板类添加到框架构造函数panel panel = new panel();
add(panel);
最后从主框架中删除绘制功能(因为您已经在面板类中定义了它)。
但是,移除上部条是没有意义的(因为Y轴上的50以下的物体会出现)。
但是如果由于某种原因你仍然想要移除上行条,那么为了删除它你必须在构造函数中定义:setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);
最后从主框架中删除绘制功能(因为您已经在面板类中定义了它)。