Я пытаюсь сделать свинг текстовый редактор. Каждый раз, когда шрифт становится большим, он изменяет размер моей JTextArea, которую я использую, и портит макет entie. Есть ли способ заблокировать размер страницы по вертикали и горизонтали? Я попытался обернуть это, но это едва работает, и это идет только горизонтально. Я посмотрел на Google и другие ресурсы и не мог найти ничего, чтобы помочь мне.
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextArea;
public class Other extends JFrame {
//create menu variables
static JMenuBar bar;
static JMenu fileMenu;
static JMenu textMenu;
static JMenuItem saveFile;
static JMenuItem newFile;
static JCheckBoxMenuItem boldRadio;
static JCheckBoxMenuItem italicsRadio;
static JMenuItem sizeOptions;
static JRadioButtonMenuItem size8;
static JRadioButtonMenuItem size9;
static JRadioButtonMenuItem size10;
static JRadioButtonMenuItem size11;
static JRadioButtonMenuItem size12;
static JRadioButtonMenuItem size14;
static JRadioButtonMenuItem size18;
static JRadioButtonMenuItem size24;
static JRadioButtonMenuItem size30;
static JRadioButtonMenuItem size36;
static JRadioButtonMenuItem size48;
static JTextArea txtArea;
//fonts
static Font font8;
static Font font9;
static Font font10;
static Font font11;
static Font font12;
static Font font14;
static Font font18;
static Font font24;
static Font font30;
static Font font36;
static Font font48;
//arrays
Other(){
super("Text Editor");
JPanel panel = new JPanel();
add(panel);
setBackground(Color.LIGHT_GRAY);
txtArea = new JTextArea(41,45);
txtArea.setEditable(true);
panel.add(txtArea);
txtArea.setBorder(BorderFactory.createLineBorder(Color.GRAY));
txtArea.setLineWrap(true);
//base menu bar code here
bar = new JMenuBar();
setJMenuBar(bar);
bar.setForeground(Color.BLACK);
fileMenu = new JMenu("File");
bar.add(fileMenu);
textMenu = new JMenu("Text");
bar.add(textMenu);
textMenu.setOpaque(true);
textMenu.setBorder(BorderFactory.createLineBorder(null,5));
//menu items code here
saveFile = new JMenuItem("Save File");
fileMenu.add(saveFile);
saveFile.setMnemonic(KeyEvent.VK_S);
newFile = new JMenuItem("New File");
fileMenu.add(newFile);
newFile.setMnemonic(KeyEvent.VK_N);
boldRadio = new JCheckBoxMenuItem("Bold");
textMenu.add(boldRadio);
boldRadio.setMnemonic(KeyEvent.VK_B);
italicsRadio = new JCheckBoxMenuItem("Italics");
textMenu.add(italicsRadio);
italicsRadio.setMnemonic(KeyEvent.VK_I);
sizeOptions = new JMenu("Text Size");
textMenu.add(sizeOptions);
sizeOptions.setSize(500,500);
ButtonGroup sizesG = new ButtonGroup();
size8 = new JRadioButtonMenuItem("8");
size9 = new JRadioButtonMenuItem("9");
size10 = new JRadioButtonMenuItem("10");
size11 = new JRadioButtonMenuItem("11");
size12 = new JRadioButtonMenuItem("12");
size14 = new JRadioButtonMenuItem("14");
size18 = new JRadioButtonMenuItem("18");
size24 = new JRadioButtonMenuItem("24");
size30 = new JRadioButtonMenuItem("30");
size36 = new JRadioButtonMenuItem("36");
size48 = new JRadioButtonMenuItem("48");
size11.setSelected(true);
for(JRadioButtonMenuItem x: sizes) {
sizesG.add(x);
sizeOptions.add(x);
x.addItemListener(new sizeClass());
}
font8 = new Font("Serif",Font.PLAIN,8);
font9 = new Font("Serif",Font.PLAIN,9);
font10 = new Font("Serif",Font.PLAIN,10);
font11 = new Font("Serif",Font.PLAIN,11);
font12 = new Font("Serif",Font.PLAIN,12);
font14 = new Font("Serif",Font.PLAIN,14);
font18 = new Font("Serif",Font.PLAIN,18);
font24 = new Font("Serif",Font.PLAIN,24);
font30 = new Font("Serif",Font.PLAIN,30);
font36 = new Font("Serif",Font.PLAIN,36);
font48 = new Font("Serif",Font.PLAIN,48);
}
class sizeClass implements ItemListener{
public void itemStateChanged(ItemEvent e) {
if(size8.isSelected()) {
txtArea.setFont(font8);
}else if(size9.isSelected()) {
txtArea.setFont(font9);
}else if(size10.isSelected()) {
txtArea.setFont(font10);
}else if(size11.isSelected()) {
txtArea.setFont(font11);
}else if(size12.isSelected()) {
txtArea.setFont(font12);
}else if(size14.isSelected()) {
txtArea.setFont(font14);
}else if(size18.isSelected()) {
txtArea.setFont(font18);
}else if(size24.isSelected()) {
txtArea.setFont(font24);
}else if(size30.isSelected()) {
txtArea.setFont(font30);
}else if(size36.isSelected()) {
txtArea.setFont(font36);
}else if(size48.isSelected()) {
txtArea.setFont(font48);
}
}
}
}