Java JFrame表单创建(多行、多列和多输入)
我想实现一个JFrame,它遵循以下照片流: 我想写一个有两个介绍文本的框架,每个问题一行,同一行上有一个输入框。我想有10行,然后在底部一个按钮来完成对话框 我已经试着实现了这一点,但我无法通过第一行。至少有人能给我指出正确的方向吗?有前4行和按钮的代码可以让我自己完成Java JFrame表单创建(多行、多列和多输入),java,swing,jframe,Java,Swing,Jframe,我想实现一个JFrame,它遵循以下照片流: 我想写一个有两个介绍文本的框架,每个问题一行,同一行上有一个输入框。我想有10行,然后在底部一个按钮来完成对话框 我已经试着实现了这一点,但我无法通过第一行。至少有人能给我指出正确的方向吗?有前4行和按钮的代码可以让我自己完成 import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
class GUI_Short_Scale extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
JDialog d1;
public int number;
JButton cont;
JTextField tf;
public GUI_Short_Scale()
{
createAndShowGUI();
}
public int getNumber()
{
return this.number;
}
private void createAndShowGUI()
{
// Must be called before creating JDialog for
// the desired effect
JDialog.setDefaultLookAndFeelDecorated(true);
// A perfect constructor, mostly used.
// A dialog with current frame as parent
// a given title, and modal
d1 = new JDialog(this,"Short Scale",true);
// Set size
d1.setSize(400,400);
d1.setLocationRelativeTo(null); // *** this will center your app ***
d1.setLayout(new FlowLayout());
cont = new JButton("Continue");
cont.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if(isNumber(tf.getText()))
{
// everything worked out just fine
number = Integer.valueOf(tf.getText());
d1.dispatchEvent(new WindowEvent(d1, WindowEvent.WINDOW_CLOSING));
}
else
{
// create a jframe
JFrame frame = new JFrame("Error");
// show a joptionpane dialog using showMessageDialog
JOptionPane.showMessageDialog(frame,"The input you gave does not look like a number. Please try again.");
}
}
});
tf = new JTextField(20);
d1.add(new JLabel("Tetris Intro"));
d1.add(tf);
d1.add(cont);
d1.setVisible(true);
}
private boolean isNumber(String s)
{
try
{
Integer.valueOf(s);
}
catch(NumberFormatException ne)
{
return false;
}
// is a number
return true;
}
}
也许像
public class TestPane extends JPanel {
public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
JTextArea intro = new JTextArea(4, 20);
JTextArea moreText = new JTextArea(4, 20);
JLabel question = new JLabel("Question 1");
JTextField answer = new JTextField(20);
JButton btn = new JButton("Done");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(2, 2, 2, 2);
add(new JScrollPane(intro), gbc);
gbc.gridy++;
add(new JScrollPane(moreText), gbc);
gbc.gridy++;
gbc.insets = new Insets(20, 2, 2, 2);
gbc.anchor = GridBagConstraints.WEST;
add(question, gbc);
gbc.gridx++;
add(answer, gbc);
gbc.insets = new Insets(80, 2, 2, 2);
gbc.gridy++;
gbc.gridx = 0;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.CENTER;
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(btn, gbc);
}
}
或
查看和了解更多详细信息
但是你能不能把有两行问句的代码插进去
这太棒了!我现在非常缺乏睡眠,所以我将此标记为答案,但是你能插入有两行问题的代码吗?对不起,你需要两条应答电话吗?是的,哈哈。。对不起。通常不喜欢这个XD,就像我接近这个
bc.gridy++;gbc.插图=新插图(20,2,2,2);gbc.anchor=GridBagConstraints.WEST;d1.添加(问题,gbc);gbc.gridx++;d1.增加(答复,gbc);gbc.gridy++;gbc.插图=新插图(40,2,2,2);gbc.anchor=GridBagConstraints.WEST;d1.增加(问题2,gbc);d1.添加(回答2,gbc)代码>
public class TestPane extends JPanel {
public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
JTextArea intro = new JTextArea(4, 20);
JTextArea moreText = new JTextArea(4, 20);
JLabel question = new JLabel("Question 1");
JTextField answer = new JTextField(20);
JButton btn = new JButton("Done");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(2, 2, 2, 2);
add(new JScrollPane(intro), gbc);
gbc.gridy++;
add(new JScrollPane(moreText), gbc);
gbc.gridwidth = 1;
gbc.gridy++;
gbc.insets = new Insets(20, 2, 2, 2);
gbc.anchor = GridBagConstraints.WEST;
add(question, gbc);
gbc.gridx++;
add(answer, gbc);
gbc.insets = new Insets(80, 2, 2, 2);
gbc.gridy++;
gbc.gridx = 0;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.CENTER;
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(btn, gbc);
}
}
public class TestPane extends JPanel {
public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
JTextArea intro = new JTextArea(4, 20);
JTextArea moreText = new JTextArea(4, 20);
JLabel question1 = new JLabel("Question 1");
JTextField answer1 = new JTextField(20);
JLabel question2 = new JLabel("Question 2");
JTextField answer2 = new JTextField(20);
JButton btn = new JButton("Done");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(2, 2, 2, 2);
add(new JScrollPane(intro), gbc);
gbc.gridy++;
add(new JScrollPane(moreText), gbc);
gbc.gridy++;
gbc.insets = new Insets(20, 2, 2, 2);
gbc.anchor = GridBagConstraints.WEST;
add(question1, gbc);
gbc.gridx++;
add(answer1, gbc);
gbc.insets = new Insets(2, 2, 2, 2);
gbc.gridy++;
gbc.gridx = 0;
add(question2, gbc);
gbc.gridx++;
add(answer2, gbc);
gbc.insets = new Insets(80, 2, 2, 2);
gbc.gridy++;
gbc.gridx = 0;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.CENTER;
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(btn, gbc);
}
}