我必須創建一個接口,它允許用戶增加/減少一段文本的大小並顯示該文本的當前字體大小值。增加JButton問題的文本字體值
我有兩個按鈕,增加和減少。 我有兩個標籤。一個標籤具有文字「X」,每次按下按鈕時都需要改變尺寸。另一個標籤必須顯示當前字體大小值「X」。
我設法實現了文本的增加/減少方法,但是我無法在單擊後獲得增加文本的值。增加時文本的值只允許用戶增加一次。我希望程序能夠在每次啓動按鈕時將其增加5。
我相信我必須以某種方式存儲字體大小的新值,並使用新的值來讓我增加/減少更多。
如果任何人可以告訴我如何做到這一點,或顯示解決方案,將不勝感激。
package lab3;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FontSize extends JFrame{
JButton increase, decrease;
JLabel sizeX, sizeValue;
public static void main (String[]args){
FontSize changeFont = new FontSize();
changeFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
changeFont.setTitle("Increase/Decrease Font Size");
changeFont.setSize(900,700);
changeFont.setVisible(true);
changeFont.setLayout(new GridLayout(2,2));
}
public FontSize(){
increase = new JButton("increase");
increase.setBackground(Color.white);
increase.setFont(increase.getFont().deriveFont(30.0f));
add(increase);
decrease = new JButton("decrease");
decrease.setBackground(Color.white);
decrease.setFont(decrease.getFont().deriveFont(30.0f));
add(decrease);
sizeX = new JLabel("X", SwingConstants.CENTER);
sizeX.setBackground(Color.yellow);
sizeX.setFont(sizeX.getFont().deriveFont(30.0f));
add(sizeX);
int temp = sizeX.getFont().getSize();
sizeValue = new JLabel("",SwingConstants.CENTER);
sizeValue.setText(String.valueOf(temp));
sizeValue.setBackground(Color.yellow);
sizeValue.setFont(sizeValue.getFont().deriveFont(30.0f));
add(sizeValue);
event e = new event();
increase.addActionListener(e);
decrease.addActionListener(e);
}
public class event implements ActionListener {
public void actionPerformed(ActionEvent e){
String operation = e.getActionCommand();
int temp = sizeX.getFont().getSize();
int temp2 = sizeValue.getFont().getSize();
if(operation.equals("increase"))
{
temp = temp + 5;
sizeX.setFont(new Font("Arial", Font.PLAIN, temp));
temp2 = temp2 + 5;
sizeValue.setText(String.valueOf(temp2));
}
else if(operation.equals("decrease"))
{
temp = temp - 5;
sizeX.setFont(new Font("Arial", Font.PLAIN, temp));
temp2 = temp2 - 5;
sizeValue.setText(String.valueOf(temp2));
}
}
}
}