繁体   English   中英

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

[英]Making an interactive GUI in Java for own program

首先——我不确定我是否正确地提出了这个问题(我是 Java 和使用 GUI 制作程序的新手)。

这是下面的事情,我正在尝试做。 我有一个 window 有几个类似的参数(数字只是为了区分行,它只是非常简单的例子,我的 GUI 应该是什么): Initial Window

然后,通过单击“+”按钮,我想添加一个新行,如下所示:添加第 35 行

也应该可以删除行,如下所示: Line 30 was deleted ,按“-”-按钮。

正如我在开头所写的那样,有可能存在这样的问题,但我找不到任何东西(可能是因为我现在没有关键字,或者我正在寻找错误的关键字)。

这样的window怎么能做到? 我唯一的想法是在每个 +/- 之后绘制一个新的 window。

加法:代码(在更改行数的部分不起作用)。

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 行(我认为这是正确的定义)按钮时,数字会增加一倍。 作为一种解决方案,我在这里看到为每个新行创建一个新面板。 但这对我来说是错误的。

PS 不幸的是,我没有时间结束这个话题或发布一个工作示例。 我实际上找到了某种解决方案,从这里的问题开始,关于 Stack Overflow: Adding JButton to JTable as cell 因此,如果有人会寻找这样的主题,它应该听起来像“jTable 中的 jButton”。

Java 有多个 GUI 框架。 首先决定你要使用哪个。

至于您的特定查询

+-添加功能,以便创建字段 object 的实例(该行与您调用的参数一致)或销毁 object 的特定实例。

单击+ -> 在连续行上创建新的 object 并增加以下字段的指针计数(?)。

-单击 -> 调用特定 object 的析构函数并减少以下字段的指针计数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM