java - JLabel 不显示在 JPanel 上
问题描述
我已经查找了这个问题并找到了几个线程。尝试了所有解决方案,但没有一个有帮助。我试图在放置鼠标的位置显示一个十字,我当前鼠标位置的 x 和 y 坐标应该显示在左上角和右上角。为了实现这一点,我使用了两个 JLabel。也许我忽略了什么?
我玩弄了我在标签中设置的标准文本,定位,我的框架和面板的不同布局 - 没有任何帮助。以下代码应该足以理解,我认为如果我遗漏了一些东西会有所帮助。
Fensterkreuz(){
jl1 = new JLabel("0");
jl2 = new JLabel("0");
jl1.setSize(new Dimension(100,100));
jl2.setSize(new Dimension(100,100));
jl1.setFont(new Font ("Arial", Font.PLAIN, 15));
jl2.setFont(new Font ("Arial", Font.PLAIN, 15));
cP = new Point();
this.add(jl1);
this.add(jl2);
addMouseMotionListener(this);
}
public void mouseDragged (MouseEvent e){
}
public void mouseMoved (MouseEvent e) {
cP = e.getPoint();
repaint();
}
public void paint (Graphics g){
g.drawLine((cP.x),(cP.y-15), (cP.x),(cP.y+15));
g.drawLine((cP.x-15),(cP.y), (cP.x+15),(cP.y));
jl1.setText(String.valueOf(cP.x));
jl2.setText(String.valueOf(cP.y));
}
public static void main (String [] args) {
JFrame f = new JFrame();
JComponent test = new Fensterkreuz();
test.setOpaque(false);
f.setVisible(true);
f.setSize(1500,1000);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setContentPane(test);
}
解决方案
将 repaint() 放在 main 方法的底部。Repaint 调用您拥有的 Paint 方法,但我认为您还必须添加自己的覆盖 repaint 方法以停止“闪烁”。
推荐阅读
- c# - 选择要显示的列表
- php - 安装 PHP7 后 Apache2 仍在运行 PHP5
- excel - 提示用户选择多个文件并对所有文件执行相同的操作
- tensorflow - 使用 tensorflow“保存的模型”api 对在 java 和 python 中加载的模型进行错误预测
- django - 如何使用 localhost 测试 Facebook 登录
- ruby-on-rails - 在哈希数组中合并哈希
- python - Xlsxwriter 将背景填充应用于范围时替换文本
- apache-flink - 带有反馈循环的 Apache Flink Stream
- c# - 从视图接收 html 字符串以替换为模板
- python - 在熊猫中按行而不是按列舍入小数