我是 Java 新手,我们有一项任务。我必须创建一个数学框架来执行某些操作并以某种方式格式化 GUI。除了将三个文本字段堆叠在顶部之外,我可以做所有事情。像这样:
t1
t2
t3
这三个盒子在左侧垂直向下,而其他 4 个盒子则在底部。
其中t1、t2和t3是文本字段,1、2、3和4是操作函数。
我无法让 x、y 和 z 位于左侧。这是我的代码,如果可以的话请帮忙!
ConvertFrame.java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class ConvertFrame extends JFrame {
private final JLabel prompt; // label to prompt user to enter Fahrenheit
private final JLabel display; // label to display temperature in Celsius
private final JTextField temperatureF; // textfield to enter temperature
private JButton b1;
private JButton b2;
private JButton b3;
private JButton b4;
private JTextField t1;
private JTextField t2;
private JTextField t3;
private JLabel operation;
private JLabel equL;
// constructor sets up GUI
public ConvertFrame() {
super("Math Frame");
prompt = new JLabel("Enter two numbers:");
operation = new JLabel(" OPR ");
equL = new JLabel(" = ");
temperatureF = new JTextField(10); // textfield
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 3));
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout(1, 5));
b1 = new JButton("ADD");
b2 = new JButton("SUB");
b3 = new JButton("MUL");
b4 = new JButton("CLEAR");
t1 = new JTextField(7);
t2 = new JTextField(7);
t3 = new JTextField(7);
panel2.add(t1);
panel2.add(operation);
panel2.add(t2);
panel2.add(equL);
panel2.add(t3);
panel.add(b1);
panel.add(b2);
panel.add(b3);
panel.add(b4);
// register anonymous action listener
Handler1 h1 = new Handler1();
Handler2 h2 = new Handler2();
Handler3 h3 = new Handler3();
Handler4 h4 = new Handler4();
b1.addActionListener(h1);
b2.addActionListener(h2);
b3.addActionListener(h3);
b4.addActionListener(h4);
display = new JLabel("");
add(prompt, BorderLayout.NORTH); // north region
add(panel2, BorderLayout.CENTER); // center region
add(panel, BorderLayout.SOUTH); // south region
} // end ConvertFrame constructor
private class Handler1 implements ActionListener // anonymous inner class
{
public void actionPerformed(ActionEvent e) {
String st1 = t1.getText();
String st2 = t2.getText();
int x = Integer.parseInt(st1);
int y = Integer.parseInt(st2);
int z = x + y;
String st3 = "";
st3 = st3 + z;
t3.setText(st3);
}
} //
private class Handler2 implements ActionListener // anonymous inner class
{
public void actionPerformed(ActionEvent e) {
String st1 = t1.getText();
String st2 = t2.getText();
int x = Integer.parseInt(st1);
int y = Integer.parseInt(st2);
int z = x - y;
String st3 = "";
st3 = st3 + z;
t3.setText(st3);
}
} // end anonymous inner class
private class Handler3 implements ActionListener // anonymous inner class
{
public void actionPerformed(ActionEvent e) {
String st1 = t1.getText();
String st2 = t2.getText();
int x = Integer.parseInt(st1);
int y = Integer.parseInt(st2);
int z = x * y;
String st3 = "";
st3 = Integer.toString(z);
t3.setText(st3);
}
} // end anonymous inner class
private class Handler4 implements ActionListener // anonymous inner class
{
public void actionPerformed(ActionEvent e) {
t1.setText("");
t2.setText("");
t3.setText("");
}
} // end anonymous inner class
// end call to addActionListener
} // end class ConvertFrame
Convert.java:
import javax.swing.JFrame;
public class Convert {
public static void main(String[] args) {
ConvertFrame convertFrame = new ConvertFrame();
convertFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
convertFrame.setSize(500, 400); // set frame size
convertFrame.setVisible(true); // display frame
}
} // end class
最佳答案
如果你想将文本字段堆叠在顶部
你应该改变这个
panel2.setLayout(new GridLayout(1, 5));
到此
panel2.setLayout(new GridLayout(5, 1));
因为在 new GridLayout(row, column)
中,第一个参数是行数和下一个列数。当前您有 1 行和 5 列。因此文本字段定位为 coulmns 。如果您想要垂直放置则应使用 1 列和 5 行
关于java - GUI 简单对齐的快速建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31397676/