当前位置: 首页 > 知识库问答 >
问题:

无法使用getGraphics绘制到J面板

孙和安
2023-03-14

我在想哪里出了问题。我以前做过这个,但由于某种原因,这次我不能让它工作。

我用Netbeans设计了这个项目。最相关的部分是initTiras方法,它被认为可以绘制一些东西,但它没有。我包含了NetBeans生成的代码。

这是代码的最简化版本,但它仍然没有绘制任何内容。

所以我在项目中创建了一个新的框架。然后我把一个JPanel放进去(在设计模式下)。JPanel称为ElPanel和JFrame LaFrame。

以下是主要类:

package ElPackage;
public class Resistores {
    public static void main(String[] args) {
        LaFrame UnaFrame = new LaFrame();
        UnaFrame.setVisible(true);
    }   
}

在LaFrame类内部:

package ElPackage;

import java.awt.Color;
import java.awt.Graphics;

public class LaFrame extends javax.swing.JFrame {
    public LaFrame () {
        initComponents();
        initTiras();
    }

    public void initTiras() {
        Graphics LasG = ElPanel.getGraphics();
        LasG.setColor(Color.WHITE);
        LasG.fillRect(10, 10, 30, 30);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        ElPanel = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        ElPanel.setBackground(new java.awt.Color(51, 0, 51));
        ElPanel.setForeground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout ElPanelLayout = new javax.swing.GroupLayout(ElPanel);
        ElPanel.setLayout(ElPanelLayout);
        ElPanelLayout.setHorizontalGroup(
            ElPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        ElPanelLayout.setVerticalGroup(
            ElPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(ElPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(ElPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        
    // Variables declaration - do not modify                     
    private javax.swing.JPanel ElPanel;
    // End of variables declaration                   
}

共有1个答案

路欣荣
2023-03-14

重写elPel的

使用java命名约定——变量应该从小写字母开始。

 类似资料:
  • 问题内容: 如何在没有类的情况下绘制对象(扩展了)?我找到了方法,但它没有绘制对象。 问题答案: 如果要更改组件的绘制方式(添加矩形),则需要在该组件中重新定义。在你的代码中,你正在使用 。 你不应该调用组件。你所做的任何绘画(退还给你的绘画)都是暂时的,并且在Swing下次确定需要重新绘画组件时将丢失。 相反,你应该覆盖或的)方法,并使用接收到的对象作为参数在此方法中进行绘制。 检查此链接以进一

  • 我正在制作一个简单的2D游戏。每次滴答,我都想检查一个效果队列,该队列将启动一个线程以获得特定效果(淡入淡出过渡、音频淡入淡出等)。例如,在菜单屏幕上按“播放”将向该队列添加“淡出”消息,该消息将被处理并启动一个线程,以在我的游戏面板上绘制一个黑色矩形,并增加阿尔法值。 我重写了绘制组件(),并将我的图形对象发送到我的游戏状态管理器,它将图形对象传递到当前状态的绘制()。我目前没有一个效果状态(也

  • 我正在做一个选择工具,我已经带来了这些解决方案,在第一次使用J面板getGraphics方法,我在鼠标被拖动的任何地方绘制一个椭圆形,在第二次我覆盖了油漆组件方法来绘制椭圆形。 当我执行第一个时,拖动鼠标会闪烁,绘图很差,而第二个方法运行完美。为什么会发生这种情况?,如果我在第一个解决方案中退出重新绘制,它会绘制椭圆形并且不会“删除”它们。 这样做的最佳实践是什么?,当我用getGraphics绘

  • 如何在没有类(扩展)的情况下绘制对象?我找到了方法,但它不能绘制对象。

  • 问题内容: 将图片绘制到jframe时出现null异常错误。我调试代码并检查图像和框架是否不为null,但在将图像绘制到框架时仍然抛出NULL异常。 请看一看 : 问题答案: NPE可能来自这里: 根据文档: 为此组件创建图形上下文。如果此组件当前不可显示,则此方法将返回null。 1)不要将其用作坏习惯/不能持久使用,除非组件可见,否则它将返回。 2)相反,使用和覆盖不要忘记在覆盖中作为第一个呼

  • 我想使用pdfbox 1.8.2 c#包装器实现在矩形边界上绘制云的功能。我能够使用此链接中提到的代码绘制单个半圆。但问题是,我只能绘制单个半圆。当我尝试绘制多个相邻的半圆时,它不起作用。下面是我使用的代码。 (CreateSallarc()由Hans Muller编写,许可证:知识共享归因3.0。所做的更改:将原始代码实现为java。算法由Aleksas Riškus提出)