Не изменяется размер Frame

98
09 февраля 2022, 01:00

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

public class MyMenu extends JFrame implements ActionListener {
    JFrame frame;
    public MyMenu() {
        super("Мое меню"); 
        setBounds(0,0,700,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setBackground(new Color(159,194,64));
        //setLayout(new GridBagLayout());
        JMenuBar ceo = new JMenuBar();
        JMenu menu = new JMenu("Вид");
        JMenu item = new JMenu("Размер окна");
        JMenuItem submenu = new JMenuItem("Выбрать размер окна");
        JCheckBoxMenuItem item1 = new JCheckBoxMenuItem("  640 x 480");
        JCheckBoxMenuItem item2 = new JCheckBoxMenuItem("  800 x 600");
        JCheckBoxMenuItem item3 = new JCheckBoxMenuItem("1024 x 768");
        item.add(submenu);
        menu.add(item);
        item.addSeparator();
        item.add(item1);
        item.add(item2);
        item.add(item3);
        ceo.add(menu);
        setJMenuBar(ceo);
        item1.addActionListener(this);        
    }
    public MyMenu(JFrame frame) {
        this.frame = frame;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println(e.getActionCommand());
        String s = e.getActionCommand();
        if(s.equals("640 x 480")) 
              frame.getContentPane().setBounds(0,0,640,480);
    }
}
Answer 1

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

String s = e.getActionCommand();
    if(s.equals("640 x 480"))frame.getContentPane().setBounds(0,0,640,480);

на

if (e.getSourse == item1){
frame.setPrefferedSize(new Dimension(640, 480));
else if(...){...}
}

но тогда придется объявить item1 за классом, как поле:

private JCheckBoxMenuItem item1 = new JCheckBoxMenuItem("  640 x 480");
//...
public class MyMenu extends JFrame implements ActionListener {
//...
Answer 2

задавайте фрэйму минимальный и максимальный размер:

Dimension dimension = new Dimension(640,480)
frame.setMinimumSize( dimension );
frame.setMaximumSize( dimension );

если минимальный размер не задан, размер окна берется по размеру содержимого.

READ ALSO
Запись файлов на SD карту

Запись файлов на SD карту

Как записывать файлы на флеш-карту в андроиде?

85
Разъясните, пожалуйста кусок кода

Разъясните, пожалуйста кусок кода

не понятно что делает кусок Colorvalues()[matrix[i][h]] Color этоперечисление строк, аргумент метода Color, что делает такая запись?Разъясните, спасибо!

99
Неверное отображение графика AreaChart

Неверное отображение графика AreaChart

У меня есть FlowPane который динамически формируется, при посещении вкладки Tab

80
Почему не работает cURL запрос

Почему не работает cURL запрос

Я хочу cURL запросом удалить все сообщения которые у меня хранятся в базе данных MySQL, так вот я написал запрос и когда ввожу его в командной строке...

110