用Java为自己的程序制作交互式GUI



首先,我不确定我是否已经正确地制定了这个问题(我是Java和GUI程序的新手(。

我正在尝试做以下事情。我有一个窗口,里面有几个类似的参数(数字只是用来区分行,这只是一个非常简单的例子,说明我的GUI应该是什么(:初始窗口

然后,通过点击"+&quot-按钮我想添加一个新行,如下所示:第35行添加

也应该可以删除行,比如这里:行30被删除,通过按"-&quot-按钮

正如我一开始所写的,有可能存在这样一个问题,但我什么都找不到(可能是因为我现在没有关键词,或者我找错了关键词(。

这样的窗口是怎么做到的?我唯一的想法是在每个+/-之后画一个新窗口。

添加:代码(不适用于更改行数的部分(。

import javax.swing.*;
import java.awt.event.*;

public class Test extends JFrame {
public Test() {

setSize(200, 600);
JButton plusButton[] = new JButton[100];
JButton minusButton[] = new JButton[100];
JTextField fields[] = new JTextField[100];
JPanel panel1 = new JPanel();

for (int i=0; i<plusButton.length; i++) {
plusButton[i]=new JButton("+");
minusButton[i]=new JButton("-");
fields[i] = new JTextField("Text "+ i);
}

for (int i=1; i<4; i++) {
panel1.add(plusButton[i*10]);
plusButton[i*10].setActionCommand("add after " +String.valueOf(i));
panel1.add(minusButton[i*10]);
minusButton[i*10].setActionCommand("remove " +String.valueOf(i));
panel1.add(fields[i*10]);
}

panel1.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

this.getContentPane().add(panel1);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e) {
for (int i=0; i<100; i++) {
String stand1 = "add after "+String.valueOf(i);
String stand2 = "remove "+String.valueOf(i);
if (stand1.equals(e.getActionCommand())) {
//add "row" of elements
panel1.add(plusButton[i]);
plusButton[i+1].setActionCommand("add");
panel1.add(minusButton[i+1]);
minusButton[i+1].setActionCommand("remove");
panel1.add(fields[i+1]);
} else if (stand2.equals(e.getActionCommand())) {
//delete "row" of elements
}
}
} 
public static void main(String[] args) {

Test a = new Test();
}
}

问题是显而易见的——当我想在按钮20后面添加2行(我认为这是正确的定义(按钮时,数字会翻倍。作为一种解决方案,我在这里看到为每一新行创建一个新面板。但这听起来不对。

附言:不幸的是,我没有时间结束这个话题或发布一个工作示例。实际上,我从这里的问题开始,在Stack Overflow上找到了某种解决方案:将JButton作为单元格添加到JTable中。所以,如果有人想找这样的话题,听起来应该是";jTable中的jButton";。

Java有多种GUI框架。首先决定你想用哪一个。

对于您的特定查询

+-添加功能,这样它将创建字段对象的实例(您调用它们时带有参数的行(或销毁该对象的特定实例。

点击CCD_ 3->在连续行上创建新对象,并增加以下字段的指针计数(?(。

点击CCD_ 4->为特定对象调用析构函数,并减少以下字段的指针计数。

最新更新