【问题标题】:Remove or hide toolbar panel in Jpanel在 Jpanel 中删除或隐藏工具栏面板
【发布时间】:2018-06-12 11:38:22
【问题描述】:

当我使用 Jpanel 时,我看到当 Y 低于 50 时,我看不到对象,因为它们隐藏在顶部面板下。我需要一种方法来隐藏顶部面板或使每次不向 Y 添加 50 成为可能。在这个例子中,圆圈的顶部是隐藏的:

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】:

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

    最后从主框架中移除paint函数(因为你已经在面板类中定义了它)。

    不过,去掉上边栏没有意义(因为Y轴50以下的物体会出现)。

    但如果出于某种原因您仍想移除上边栏,那么为了移除它,您必须在构造函数中定义:setExtendedState(JFrame.MAXIMIZED_BOTH); setUndecorated(true);

    最后从主框架中移除paint函数(因为你已经在面板类中定义了它)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多