Создание рамки basi c с 3 переключателями и кнопкой отправки - PullRequest
0 голосов
/ 30 марта 2020
public void rotateGUI() {
   JFrame rotateFrame = new JFrame("Image Rotation");
   JRadioButton rotateLeft = new JRadioButton("Rotate Left");
   JRadioButton rotateRight = new JRadioButton("Rotate Right"); 
   JRadioButton upsideDown = new JRadioButton("Rotate Upside Down");
   JButton submit = new JButton("Submit");
   ButtonGroup rotateButtons = new ButtonGroup();
   rotateLeft.setBounds(120,30,120,50);
   rotateRight.setBounds(120,30,120,50);
   upsideDown.setBounds(120,30,120,50);
   submit.setBounds(125,90,80,30);
   rotateFrame.add(rotateLeft);
   rotateFrame.add(rotateRight);
   rotateFrame.add(upsideDown);
   rotateFrame.add(submit);
   rotateButtons.add(rotateLeft);
   rotateButtons.add(rotateRight);
   rotateButtons.add(upsideDown);
   submit.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e) {
    if (rotateLeft.isSelected()) {    
          rotationAngle = 90; 
       } 
       else if (upsideDown.isSelected()) { 

              rotationAngle = 180; 
       } 
       else if (rotateRight.isSelected()){ 

              rotationAngle = 270;
       }
    }

        });
    rotateFrame.setBounds(200, 200, 400, 200);
    rotateFrame.setVisible(true);

Я пытаюсь создать фрейм с 3-мя переключателями и кнопкой отправки, но независимо от того, что я делаю при запуске, это просто кадр с большой кнопкой отправки. Что не так с моим кодом? Заранее спасибо.

1 Ответ

0 голосов
/ 30 марта 2020

Вместо того, чтобы пытаться размещать и измерять все самостоятельно, используйте Swing Layout Manager .

Вот вам GUI, который я придумал.

Image Rotation GUI

Вот изменения, которые я сделал.

  1. Я добавил вызов метода invokeLater SwingUtilities, чтобы гарантировать, что компоненты Swing созданы и выполнены на поток рассылки событий.

  2. Я вложил JPanels, чтобы я мог использовать BorderLayout и GridLayout.

  3. Я сгруппировал вызовы метода компонента Swing вместе и организовал их по строке и столбцу. Это значительно упрощает поиск и устранение проблем.

Вот код.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;

public class ExampleGUI {

    private int rotationAngle;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ExampleGUI().rotateGUI();
            }
        });
    }

    public void rotateGUI() {
        JFrame rotateFrame = new JFrame("Image Rotation");
        rotateFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());
        mainPanel.setPreferredSize(new Dimension(300, 100));

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(0, 1));

        ButtonGroup rotateButtons = new ButtonGroup();
        JRadioButton rotateLeft = new JRadioButton("Rotate Left");
        rotateButtons.add(rotateLeft);
        JRadioButton rotateRight = new JRadioButton("Rotate Right");
        rotateButtons.add(rotateRight);
        JRadioButton upsideDown = new JRadioButton("Rotate Upside Down");
        rotateButtons.add(upsideDown);

        buttonPanel.add(rotateLeft);
        buttonPanel.add(rotateRight);
        buttonPanel.add(upsideDown);

        mainPanel.add(buttonPanel, BorderLayout.BEFORE_FIRST_LINE);

        JButton submit = new JButton("Submit");
        submit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (rotateLeft.isSelected()) {
                    rotationAngle = 90;
                } else if (upsideDown.isSelected()) {
                    rotationAngle = 180;
                } else if (rotateRight.isSelected()) {
                    rotationAngle = 270;
                }
            }
        });
        mainPanel.add(submit, BorderLayout.AFTER_LAST_LINE);

        rotateFrame.add(mainPanel);
        rotateFrame.pack();
        rotateFrame.setLocationByPlatform(true);
        rotateFrame.setVisible(true);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...