【问题标题】:Swing: Characters not displaying on screenSwing:字符不显示在屏幕上
【发布时间】:2017-07-18 21:33:07
【问题描述】:

我正在尝试显示使用键盘输入的字符。这是我的程序:

import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;

public class CenterJPanel extends JPanel implements MouseMotionListener, KeyListener
{
protected static int circleSize 20;
private int lastX = 0, lastY = 0;
protected static int recordX;
protected static int recordY;

public CenterJPanel()
{
    setBackground(Color.gray);
    JLabel jl = new JLabel("CENTER");
    this.add(jl);

    this.addMouseMotionListener(this);
    this.addKeyListener(this);
 }

 @Override
public void mouseDragged(MouseEvent e)
{
    int x = e.getX();
    int y = e.getY();

    drawLine(x, y);
}

private void drawLine(int x, int y)
{
    Graphics g = getGraphics();
    Graphics2D g2D = (Graphics2D)g;
    g2D.setColor(Color.Black);
    g2D.setStroke(new BasicStroke(circleSize));
    g2D.drawLine(lastX, lastY, x, y);
    record(x, y);
}

protected void record(int x, int y)
{
    lastX = x;
    lastY = y;
}
@Override
public void mouseMoved(MouseEvent e) {

}

@Override
public void keyTyped(KeyEvent e)
{

    String s = String.valueOf(e.getKeyChar());
    Graphics g = getGraphics();
    g.setColor(Color.RED);
    g.setFont(new Font("Times New Roman", Font.BOLD, 2));
    g.drawString(s, lastX + 10, lastY + 10);

    System.out.println(lastX + " " + lastY + "    String: " + s);
}

@Override
public void keyPressed(KeyEvent e) {

}

@Override
public void keyReleased(KeyEvent e) {

}
}

如您所见,我可以覆盖keyTypedfunction,但它似乎没有做任何事情。请有人帮忙!

【问题讨论】:

标签: java swing user-interface keylistener


【解决方案1】:

KeyEvent 被分派给具有焦点的组件。默认情况下,JPanel 是不可聚焦的,因此它不会接收 KeyEvents。

尝试将以下内容添加到类的构造函数中:

setFocusable(true);

如果这是框架中唯一的面板,那么它应该获得焦点。

【讨论】:

  • 我试过了,但是没有用。我总共有 4 个面板连接到 Jframe。
  • @therimovie2ATmail.com,所以需要在有焦点的组件中添加KeyListener。
  • @therimovie2ATmail.com 一次只能聚焦一个组件,您可以通过调用requestFocusInWindow 强制聚焦,但我倾向于在鼠标事件上这样做以确保
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 2018-01-23
  • 2011-07-18
  • 2020-12-27
相关资源
最近更新 更多