Oleksiy Miyskiy Ответов: 2

Как преобразовать java в C++?


import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JLabel;


public class ResizeLabelFont
  extends JLabel
{
  private static final long serialVersionUID = 8642870745555129506L;
  public static final int MIN_FONT_SIZE = 1;
  public static final int MAX_FONT_SIZE = 30;
  Graphics a;
  
  public ResizeLabelFont(String text) {
    super(text);
    init();
  }
  
  protected void init() {
    addComponentListener(new ComponentAdapter(this)
        {
          public void componentResized(ComponentEvent e) { this.a.adaptLabelFont(this.a); }
        });
  }
  
  protected void adaptLabelFont(JLabel l) {
    Font f = l.getFont();
    int maxHeight = l.getHeight() - 10;
    int maxWidth = l.getWidth() - 10;
    int fontHeight = 1;
    int fontWidth = 1;
    int fontSize = 1;
    while (fontHeight < maxHeight && fontWidth < maxWidth && fontSize < 30) {
      l.setFont(l.getFont().deriveFont(fontSize));
      fontHeight = l.getFontMetrics(l.getFont()).getHeight();
      fontWidth = l.getFontMetrics(l.getFont()).stringWidth(l.getText());
      fontSize++;
    } 

    setFont(f.deriveFont(f.getStyle(), fontSize));
    repaint();
  }
  
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    this.a = g;
  }
}


Что я уже пробовал:

Не могли бы вы помочь мне преобразовать следующий Java - код в C++?

2 Ответов

Рейтинг:
2

KarstenK

Вы не можете преобразовать его напрямую, потому что JLabel не является классом C++, а в C++есть и другие классы.

Сначала вы должны проверить, какой элемент управления в C++ вы хотите изменить, а затем понять его функции для изменения нужных свойств. Мой совет заключается в том, что вы можете использовать CStatic, но вы можете написать приложение на первом этапе. Потратьте время, чтобы понять GetTextExtend объяснено в этой статье.


Рейтинг:
1

Richard MacCutchan

Перевод с одного языка на другой не всегда прост. Вы можете попробовать онлайн-конвертеры (Google их найдет), или если вы хорошо владеете обоими языками, то лучше всего делать это построчно.