在Jpanel中删除或隐藏工具栏面板

问题描述 投票:0回答:1

当我与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);
    }

}
java jpanel graphics2d
1个回答
0
投票

首先,你必须使用你创建的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);

最后从主框架中删除绘制功能(因为您已经在面板类中定义了它)。

© www.soinside.com 2019 - 2024. All rights reserved.