gpt4 book ai didi

java - java GUI中动态添加和排序复选框

转载 作者:行者123 更新时间:2023-12-02 11:58:43 27 4
gpt4 key购买 nike

我现在正在开发一个 Java GUI 数据可视化项目。程序应加载一个数据文件(20-300M),并根据文件中的信号绘制曲线。信号非常多,在不同的数据文件中,这些信号的出现情况也不同。

例如我有两个数据文件,名称为file1、file2。在文件1中,有3个我想绘制的信号(A,B,C),在文件2中,只有2个信号(A,B)。

在文件1中,信号A出现10次,B出现5次,C出现4次。在文件2中,信号B出现20次,信号A出现10次。我想要做的是根据信号动态生成复选框(用于选择在绘制面板上显示哪条信号曲线),并根据它们的出现对这些复选框进行排序。

这意味着,如果我加载文件1,那么A的复选框应该在顶部,然后B的复选框,最后C的复选框。如果我加载文件2,那么B的复选框应该在顶部,然后B的复选框应该在顶部答:

可以这样做吗?我希望我的解释是有道理的。提前非常感谢你们!

最佳答案

这是一个组件动态布局的示例

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class DynamicLayoutExample implements Runnable {

private static final String[] NAMES_1 = {"One", "Two", "Three", "Four", "Five"};

private static final String[] NAMES_2 = {"Two", "One", "Five", "Three"};

public static void main(String[] args) {
SwingUtilities.invokeLater(new DynamicLayoutExample());
}

@Override
public void run() {
JFrame frm = new JFrame("Dynamic layout");
final CardLayout card = new CardLayout();
final JPanel layoutPanel = new JPanel(card);
layoutPanel.add(createPanel(NAMES_1), "1");
layoutPanel.add(createPanel(NAMES_2), "2");
frm.add(layoutPanel);
ActionListener l = new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
card.show(layoutPanel, e.getActionCommand());
}
};
JButton btn = new JButton("Show NAMES_1");
btn.setActionCommand("1");
btn.addActionListener(l);
JPanel buttonsPanel = new JPanel();
buttonsPanel.add(btn);
btn = new JButton("Show NAMES_2");
btn.setActionCommand("2");
btn.addActionListener(l);
buttonsPanel.add(btn);
frm.add(buttonsPanel, BorderLayout.NORTH);
frm.pack();
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.setLocationRelativeTo(null);
frm.setVisible(true);
}

private JPanel createPanel(String[] array) {
JPanel result = new JPanel(new GridLayout(array.length, 1));
for (String s : array) {
JCheckBox check = new JCheckBox(s);
check.setHorizontalAlignment(SwingConstants.LEADING);
result.add(check);
}
return result;
}
}

关于java - java GUI中动态添加和排序复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47415172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com