用Java为自己的程序制作交互式GUI的用户界面
首先,我不确定我是否正确地表达了这个问题(我对Java和GUI编程都是新手)
这是下面的事情,我正在努力做。我有一个带有几个类似参数的窗口(数字只是为了区分行,它只是一个非常简单的示例,我的GUI应该是什么): Initial Window
然后,单击“+”按钮,我想添加一个新行,如下所示: Line 35 is added
还可以通过按“-”按钮删除行,如:Line 30 was deleted
正如我在开始时所写的,有可能存在这样一个问题,但我什么也找不到(可能是因为我现在不知道关键词,或者我用了一个错误的关键词)
如何做到这一点?我唯一的想法就是在每个+/-之后画一个新窗口
添加:代码(更改行数部分不起作用)
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之后添加两行按钮(我认为这是正确的定义)时,数字会加倍。作为解决方案,我在这里看到为每一新行创建一个新面板。但这对我来说是错误的
不幸的是,我没有时间结束这个话题,也没有时间发布一个有效的例子。实际上,从这里的问题开始,我找到了一些关于堆栈溢出的解决方案: Adding JButton to JTable as cell。 所以,如果有人在寻找这样的主题,它应该听起来像“jTable中的jButton”
# 1 楼答案
Java有多种GUI框架。首先决定你要用哪一个
至于你的具体问题
向
+
和-
添加功能,这样它将创建字段对象的实例(与您所称的参数一致)或销毁该对象的特定实例+
被点击->;在连续线上创建新对象并增加指针计数(?)以下字段之一-
点击->;为特定对象调用析构函数,并减少以下字段的指针计数