Графика DrawString не отображается в JPanel

Aterix спросил: 14 ноября 2017 в 05:27 в: java

Я пытаюсь создать Java-программу, которая позволит вам программировать простые игры, используя панели кода с перетаскиванием. Использование JTextField в моей панели кода создало сбой, когда перед обновлением размера будет долгая задержка, поэтому я прибег к созданию собственного JTextField с использованием JPanel.

Вот код:

package editor;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;import javax.swing.JPanel;
import javax.swing.border.LineBorder;public class JCustomTextField extends JPanel {    String text;
    int xMargin;
    int yMargin;
    int width;
    int height;    public JCustomTextField(String initText, int xMargin, int yMargin, int height, int width) {        this.xMargin = xMargin;
        this.yMargin = yMargin;
        this.width = width;
        this.height = height;
        this.text = initText;        setBorder(new LineBorder(Color.DARK_GRAY, 2));
        setBounds(0, 0, width, height);        addKeyListener(new KeyListener() {            @Override
            public void keyPressed(KeyEvent arg0) {
                text.concat("" + arg0.getKeyChar());
                repaint();
            }            @Override
            public void keyReleased(KeyEvent arg0) {            }            @Override
            public void keyTyped(KeyEvent arg0) {            }        });
    }    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.WHITE);
        g.drawString(text, xMargin, yMargin);
    }
    public Dimension getMinimumSize() {
        return new Dimension(width, height);
    }
    public Dimension getPreferredSize() {
        return new Dimension(width, height);
    }
    public Dimension getMaximumSize() {
        return new Dimension(width, height);
    }}

Теперь я создаю массив JComponent, содержащий JLabel и текстовую панель, и добавляю его на панель кода.

JComponent[] jumpComps = {new JLabel("Jump Height:"), new JCustomTextField("10", 2, 2, 20, 50)};
    CodePanel jumpPanel = new CodePanel(0,0, jumpComps, 1);

Появляется рамка, но не текст.

Вот изображение панели кода:

0 ответов