Реализация кнопок awt

186
19 ноября 2017, 13:52

Плохо понимаю принцип реализации кнопок. Буду признателен за разъяснения. P.S. как реализовать увеличение/уменьшение на каждое нажатие,а не 1 раз?

public class GUI extends Frame {
    public GUI() throws HeadlessException {
        Frame frame = new Frame();
        frame.setVisible(true);
        frame.setTitle("Test window");
        frame.setSize(300, 300);
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                //System.exit(0);
                frame.dispose();
            }
        });
        String fontName = "Arial";
        int fontStyle = 10;
        int fontSize = 12;
        Font font = new Font(fontName, fontStyle, fontSize);
        Panel mainPanel = new Panel();
        Panel textPlacePanel = new Panel();
        Panel buttonPlacePanel = new Panel();
        Button increaseButton = new Button("Increase");

        Button decreaseButton = new Button("Decrease");
        Label label = new Label("Font size");
        TextArea textArea = new TextArea();
        textArea.setFont(font);
        frame.add(mainPanel,BorderLayout.CENTER);
        frame.add(buttonPlacePanel,BorderLayout.SOUTH);
        frame.add(textPlacePanel,BorderLayout.CENTER);
        buttonPlacePanel.add(label);
        buttonPlacePanel.add(increaseButton);
        buttonPlacePanel.add(decreaseButton);
        textPlacePanel.add(textArea);
        increaseButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int i = font.getSize();
                Font font = new Font(fontName,fontStyle,++i);
                textArea.setFont(font);
            }
        });
        decreaseButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int i = font.getSize();
                Font font = new Font(fontName,fontStyle,--i);
                textArea.setFont(font);
            }
        });
    }
    public static void main(String[] args) {
        GUI gui = new GUI();
    }
}
Answer 1

Проблема в том, что размер шрифта вы берете у внешнего объекта font, который вы не изменяете, поэтому работает только 1 раз.

int i = font.getSize();
Font font = new Font(fontName,fontStyle,++i);
textArea.setFont(font);

Получайте шрифт из TextArea и берите его размер. В обоих случаях:

int i = textArea.getFont().getSize();
Font font = new Font(fontName,fontStyle,++i);
textArea.setFont(font);
READ ALSO
установка sqldeveloper на ubuntu 16.04

установка sqldeveloper на ubuntu 16.04

При первой попытке запуска sqldeveloper система запрашивает полный путь установленного JDKДля того, чтобы узнать полную путь до jdk я использую команду...

216
Краш приложения

Краш приложения

При нажатии на число месяца приложение падает

201
Синхронизация в Java

Синхронизация в Java

Смысл такой: заходят три потока с очередностью в три секунды, первый поток как надо проходит остальные два ждут, но когда доходит до просыпания...

182