【问题标题】:How can I adjust the font size when I press the key?按键时如何调整字体大小?
【发布时间】:2022-01-14 08:14:24
【问题描述】:

中间有一个字母“Hello world”。如果在这个字母上按键盘“+”,大小增加2,如果按“-”,大小减少2。但字体大小应始终在10到50磅之间。一开始是16分。

我正在解决这个问题。

字体大小只有2增2减。

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class T_1_2 extends JFrame {

 private int fontSize = 16;    // 글자 크기
 private JLabel lb;

 T_1_2() {
        setTitle("My Frame");
        setSize(600, 400);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        add(lb=new JLabel("Hello, World!"),
                BorderLayout.CENTER);
        lb.setHorizontalAlignment(JLabel.CENTER); //라벨 가운데 정렬
        setFont();

        addKeyListener(new KeyAdapter() { //keylistener 클래스를 이미 구현

         @Override // 특정 동작이 일어나게 하려면 override해서 사용 
         public void keyPressed(KeyEvent e) {
             if (e.getKeyCode() == KeyEvent.VK_UP) {
                 lb.setFont(new Font("Serif", Font.PLAIN, fontSize+2));
             }
             else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                 lb.setFont(new Font("Serif", Font.PLAIN, fontSize-2));
             }
         }
        });
        setVisible(true);
 }

 private void setFont() {
        lb.setFont(new Font("Serif", Font.PLAIN, fontSize));
 }

 public static void main(String[] args) {
        new T_1_2();
 }
}

输出

字体大小只有2增2减。

预期

当字母为 vk_up 时,字母变大 2 点,当字母为 vk_down 时,字母变小 2 点。

应该只有10到50分,跑的时候字母要以16分开头。

【问题讨论】:

  • Math.min(50, fontSize + 2),例如。

标签: java swing fonts jlabel keyevent


【解决方案1】:

您从未真正更新 fontSize 变量。事实上,fontSize 永远是 16。你需要做的是改变 fontSize 的值,然后使用你的 setFont() 方法,这将在你的 keyListener 中发生:

addKeyListener(new KeyAdapter() {

    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_UP) {
            if(fontSize < 50)
                fontSize += 2; //change value of fontSize by adding 2
        }
        else if(e.getKeyCode() == KeyEvent.VK_DOWN) {
            if(fontSize > 10)
                fontSize -= 2;
        }
        setFont(); //use your setFont() method to set the label font with the new font size
    }
});

【讨论】:

  • 谢谢!它比我想象的要简单
猜你喜欢
  • 1970-01-01
  • 2011-04-05
  • 2012-01-28
  • 2011-02-28
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
相关资源
最近更新 更多