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 个单选按钮和一个提交按钮的框架,但无论我何时运行它,它都只是一个带有大提交按钮的框架。我的代码有什么问题吗?提前致谢。
最佳答案
不要尝试自己放置所有东西并调整其大小,而是使用 Swing Layout Managers .
这是我想出的 GUI。
这是我所做的更改。
我添加了对 SwingUtilities invokeLater 方法的调用,以确保在事件调度线程上创建并执行 Swing 组件。
我嵌套了 JPanel,以便可以使用 BorderLayout 和 GridLayout。
我将 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);
}
}
关于java - 创建一个带有 3 个单选按钮和一个提交按钮的基本框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60929104/