dale1221 :
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);
I am trying to make a frame which has 3 radio buttons and a submit button, but no matter what I do whenever I run it it's just a frame with a big Submit button. What is wrong with my code? Thanks in advance.
Gilbert Le Blanc :
Instead of trying to place and size everything yourself, use Swing Layout Managers.
Here's the GUI I came up with.
Here are the changes I made.
I added a call to the SwingUtilities invokeLater method to ensure that the Swing components are created and executed on the Event Dispatch Thread.
I nested JPanels so I could use a BorderLayout and a GridLayout.
I grouped Swing component method calls together and organized them by row and column. This makes it much much much easier to find and fix problems.
Here's the code.
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);
}
}
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=370814&siteId=1