Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么drawString没有出现在JFrame GUI中?_Java_Jframe - Fatal编程技术网

Java 为什么drawString没有出现在JFrame GUI中?

Java 为什么drawString没有出现在JFrame GUI中?,java,jframe,Java,Jframe,我不明白为什么绘图(“字符串”)没有显示在GUI中。我以前做过这件事,我记不起我遗漏了什么,也找不到任何在线解决方案。我认为您需要后退一步,重新检查可用的教程,从开始并更好地了解绘画的实际工作原理 你的基本问题是,你似乎有一个“魔法代码”的符号。问问你自己,你的paint方法(以及如何)叫什么 基本上,为了执行自定义绘制,您需要从基于JComponent的类扩展,重写它的paintComponent方法(调用super.paintComponent以维护绘制链)并执行自定义绘制 然后需要将此组件

我不明白为什么绘图(“字符串”)没有显示在GUI中。我以前做过这件事,我记不起我遗漏了什么,也找不到任何在线解决方案。

我认为您需要后退一步,重新检查可用的教程,从开始并更好地了解绘画的实际工作原理

你的基本问题是,你似乎有一个“魔法代码”的符号。问问你自己,你的
paint
方法(以及如何)叫什么

基本上,为了执行自定义绘制,您需要从基于
JComponent
的类扩展,重写它的
paintComponent
方法(调用
super.paintComponent
以维护绘制链)并执行自定义绘制

然后需要将此组件附加到屏幕上实际显示的内容


@Override
添加到
绘制
上方,然后查看所需内容get@MadProgrammer如果他不延长期限,他为什么要超限anything@JacobB.准确地说,他应该创建一个扩展JPanel或JFrame或其他内容的类,然后添加paint()或paintComponent()方法。是的,这就是我在上面的评论@JacobB中所说的。我的目的是试图让OP意识到,仅仅有一个
绘制
方法并不能使某些东西可以绘制-对于最近的许多问题,可以使用
@override
来验证他们自己的意图;)是的,是有意义的。我喜欢e被动攻击式教学思想@JacobB。如果你想用头撞它,我有一块多余的砖头
package me.tykutcher.text.gui;

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

import javax.swing.JFrame;

public class textGui {

    public void paint(Graphics g){
        g.setColor(Color.BLACK);
        g.drawString("String", 50, 50);
        g.setColor(Color.RED);
    }

    public static void main(String[] args){
        JFrame frame = new JFrame();
        frame.setSize(1080, 1080);
        frame.setTitle("Loading... ");  
        frame.setVisible(true);
    }



}
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Test");
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawString("String", 50, 50);
            g.setColor(Color.RED);
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }

    }

}