小编Jos*_*iah的帖子

在乐谱软件中将图形添加到 JPanel 的正确方法

我一直在开发一种乐谱软件,我想用它来训练我的音乐学生视奏。

我想知道我是否采取了正确的方法,或者是否有更好的方法。

我已经设法使用支持乐谱的 unicodes 和字体使用如下代码制作谱号、音符和谱表对象:

public static void spaceStaff(Graphics g){
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    Font font = new Font("Bravura", Font.PLAIN, 32);
    g2.setFont(font);
    g2.drawString("\uD834\uDD1A", note.spacing-2, staffDistance);
    note.spacing = note.spacing + 16;
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个名为 Surface 的类,它将笔记绘制到 JPanel 上:

public class Surface extends JPanel {
@Override
public void paintComponent(Graphics g){
    super.paintComponent(g);
    staff.spaceStaff(g);
    clef.drawGclef(g);//not given in example code above
    note.drawCrotchet(g, note.B1);//not given in example code above
   }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码启动应用程序并显示音乐笔记:

public class SightreadHelper extends JFrame {

public SightreadHelper(){
    initUI();
}

private void …
Run Code Online (Sandbox Code Playgroud)

java swing repaint

4
推荐指数
1
解决办法
330
查看次数

标签 统计

java ×1

repaint ×1

swing ×1