布局管理器,将一个十进制整数分别转换成二进制、八进制和十六进制整数
时间: 2024-04-30 14:01:27 浏览: 11
下面是一个使用Java Swing的布局管理器实现将一个十进制整数分别转换成二进制、八进制和十六进制整数的GUI程序:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class NumberConverter extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private static final int WIDTH = 400;
private static final int HEIGHT = 150;
private static final String TITLE = "Number Converter";
private JTextField decimalField, binaryField, octalField, hexadecimalField;
public NumberConverter() {
super(TITLE);
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
JPanel decimalPanel = new JPanel(new BorderLayout());
JLabel decimalLabel = new JLabel("Decimal:");
decimalField = new JTextField();
decimalField.setPreferredSize(new Dimension(200, 25));
decimalPanel.add(decimalLabel, BorderLayout.WEST);
decimalPanel.add(decimalField, BorderLayout.CENTER);
mainPanel.add(decimalPanel);
JPanel binaryPanel = new JPanel(new BorderLayout());
JLabel binaryLabel = new JLabel("Binary:");
binaryField = new JTextField();
binaryField.setPreferredSize(new Dimension(200, 25));
binaryField.setEditable(false);
binaryPanel.add(binaryLabel, BorderLayout.WEST);
binaryPanel.add(binaryField, BorderLayout.CENTER);
mainPanel.add(binaryPanel);
JPanel octalPanel = new JPanel(new BorderLayout());
JLabel octalLabel = new JLabel("Octal:");
octalField = new JTextField();
octalField.setPreferredSize(new Dimension(200, 25));
octalField.setEditable(false);
octalPanel.add(octalLabel, BorderLayout.WEST);
octalPanel.add(octalField, BorderLayout.CENTER);
mainPanel.add(octalPanel);
JPanel hexadecimalPanel = new JPanel(new BorderLayout());
JLabel hexadecimalLabel = new JLabel("Hexadecimal:");
hexadecimalField = new JTextField();
hexadecimalField.setPreferredSize(new Dimension(200, 25));
hexadecimalField.setEditable(false);
hexadecimalPanel.add(hexadecimalLabel, BorderLayout.WEST);
hexadecimalPanel.add(hexadecimalField, BorderLayout.CENTER);
mainPanel.add(hexadecimalPanel);
JPanel buttonPanel = new JPanel();
JButton convertButton = new JButton("Convert");
convertButton.addActionListener(this);
buttonPanel.add(convertButton);
mainPanel.add(buttonPanel);
add(mainPanel);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String decimalString = decimalField.getText();
if (decimalString.isEmpty()) {
return;
}
try {
int decimal = Integer.parseInt(decimalString);
String binary = Integer.toBinaryString(decimal);
String octal = Integer.toOctalString(decimal);
String hexadecimal = Integer.toHexString(decimal);
binaryField.setText(binary);
octalField.setText(octal);
hexadecimalField.setText(hexadecimal);
} catch (NumberFormatException ex) {
// do nothing
}
}
public static void main(String[] args) {
new NumberConverter();
}
}
```
在这个程序中,我们使用了BoxLayout来垂直排列各个面板,使用BorderLayout将标签和文本框放在一起,使用JButton添加一个转换按钮,并在actionPerformed方法中实现将十进制整数转换成二进制、八进制和十六进制整数的逻辑。