Java GUI,组织一个对话框以从用户获取数据

use*_*489 4 java user-interface swing

我正在为我的研究项目设计一个GUI.我想创建一个从用户获取信息的对话框.这是截图:

当前状态的图像

以下是截图的代码:

JTextField projnameField = new JTextField(10);
JTextField nField = new JTextField(5);
JTextField mField = new JTextField(5);
JTextField alphaField = new JTextField(5);
JTextField kField = new JTextField(5);

JFileChooser inputfile = new JFileChooser();
inputfile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

File file = inputfile.getSelectedFile();
String fullpath = file.getAbsolutePath();

JPanel myPanel = new JPanel();

myPanel.add(new JLabel("Project Name:"));
myPanel.add(projnameField);

myPanel.add(new JLabel("Number of instances:"));
myPanel.add(nField);

myPanel.add(new JLabel("Number of attributes:"));
myPanel.add(mField);

myPanel.add(new JLabel("Alpha:"));
myPanel.add(alphaField);

myPanel.add(new JLabel("Number of patterns:"));
myPanel.add(kField);

myPanel.add(new JLabel("Please select your datset:"));
myPanel.add(inputfile);

myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS));

int result = JOptionPane.showConfirmDialog(
    null, myPanel, "CPM Program", JOptionPane.OK_CANCEL_OPTION);

double alpha = Double.parseDouble(alphaField.getText());
int numpat = Integer.parseInt(kField.getText());
int num_inst = Integer.parseInt(nField.getText());
int num_attr = Integer.parseInt(mField.getText());
String projname = (projnameField.getText());
Run Code Online (Sandbox Code Playgroud)

关于上面的图片,我有两个问题:

  1. 请注意标签居中.我怎样才能将这些放在左侧:

    Project name:        --textbox--
    Number of instances: --textbox--
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在标签"请选择您的数据集"中,我想浏览文件,选择它并在"请选择您的数据集"标签前面的空白框中复制完整路径,但我不知道该怎么做它.

Hov*_*els 5

1-第一个问题是项目名称或实例数等所有标签都居中(似乎!).我怎么能把它们放在左侧?

JLabel有一个构造函数,它将int作为参数之一,您可以使用它来定位JLabel中保存的文本.

2-第二个问题是文本字段不在标签的前面并且在它们下面.我想在标签的前面有每个文本字段,例如:

布局是关键.考虑使用GridBagLayout(最初可能有些难以使用)或MigLayout(更易于使用但必须先下载)以允许为GUI使用更多表格结构.

例如,请查看本答案中的代码,了解使用GridBagLayout的表格结构示例.