感谢CSDN周老师

 

package demo20110610;

 

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.*;

/*

 * this class is  panel "configuration";

 * the purpose of  this class is  channel configuration,

 * it will provide some channels for importing data from excel files or SQL Server DataBase Tables.    

 */

//config

public class configPanelCopy extends JPanel {

int chanNumber = 32;

public JTextField[] jtx1 = new JTextField[chanNumber];

public JTextField[] jtx2 = new JTextField[chanNumber];

public JTextField[] jtx3 = new JTextField[chanNumber];

 

public JButton[] jb1 = new JButton[chanNumber];

public JButton[] jb2 = new JButton[chanNumber];

 

 

 

public static void main(String[] args) {

JFrame jf = new JFrame();

jf.setName("test");

configPanelCopy config = new configPanelCopy();

jf.add(config);

jf.setVisible(true);

jf.setBounds(10, 10, 600, 500);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

}

 

public configPanelCopy() {

 

 

for (int i = 0; i < chanNumber; i++) {

 

jtx1[i] = new JTextField("name", 10);

jtx2[i] = new JTextField("function", 10);

jtx3[i] = new JTextField("max value", 8);

 

jb1[i] = new JButton("Insert");// insert button

jb2[i] = new JButton("Zero");// dispose

 

System.out.println(i);

jb1[i].addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

/*???如何实现按钮监听,让每行的文本框从外部导入数据到所在行文本框????*/

例如:String[] abs=  {bufferredRead(c//d.txt)

jtx1[i].setText( abs [0]);

jtx2[i].setText(abs [1]);

jtx3[i].setText(abs [2]);

//当然此actionPerformed方法是错误的,不能实现其中功能

}

});

 

 

jb2[i].addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

/*????如何实现按钮监听,使得每行文本框清零???*/

 

}

});

 

}

 

 

 

 

JPanel editPanel = new JPanel();

 

//  JCheckBox group

JCheckBox[] chan = new JCheckBox[chanNumber];

for (int i = 0; i < chanNumber; i++) {

int j = i + 1;

String chanName = "CHANNEL" + j;

chan[i] = new JCheckBox(chanName);

}

editPanel.setLayout(new GridLayout(chanNumber, 1));

JPanel[] subeditPanel = new JPanel[chanNumber];

for (int i = 0; i < chanNumber; i++) {

subeditPanel[i] = new JPanel();

subeditPanel[i].add(chan[i]);

subeditPanel[i].add(jtx1[i]);

subeditPanel[i].add(jtx2[i]);

subeditPanel[i].add(jtx3[i]);

 

subeditPanel[i].add(jb1[i]);

subeditPanel[i].add(jb2[i]);

editPanel.add(subeditPanel[i]);

// ScrollPanel.setViewportView(editPanel);

 

}

JScrollPane ScrollPanel = new JScrollPane(editPanel);// ???

ScrollPanel.setViewportView(editPanel);

ScrollPanel.setWheelScrollingEnabled(true);

 

ScrollPanel.setPreferredSize(new Dimension(20, 20));

ScrollPanel.revalidate();

ScrollPanel.repaint();

 

JPanel jrp = new JPanel();

JButton saveAll = new JButton("Save Channel Configuration");

JButton disposeAll = new JButton("Depose Channel Configuration");

jrp.add(saveAll);

jrp.add(disposeAll);

 

this.setLayout(new GridLayout(1,1));

this.add(ScrollPanel);

this.setSize(300,500);

 

}

 

}

另外:如果以上代码功能实现后,如何实现保存,然后下次打开面板时各文本框是配置之后的内容?

谢谢各位前辈指点!

 

感谢CSDN周老师解决问题:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.io.*;

/*
* this class is the editor of the optional panel "configuration";
* the purpose of this class is channel configuration,
* it will provide some channels for importing data from different sensors. 
*/
//config
public class configPanelCopy extends JPanel
{
   
int chanNumber = 32;
   
public JTextField[] jtx1 = new JTextField[chanNumber];
   
public JTextField[] jtx2 = new JTextField[chanNumber];
   
public JTextField[] jtx3 = new JTextField[chanNumber];
   
public JButton[] jb1 = new JButton[chanNumber];
   
public JButton[] jb2 = new JButton[chanNumber];
   
   
public configPanelCopy()
    {
       
for (int i = 0; i < chanNumber; i++)
        {
            jtx1[i]
= new JTextField("name", 10);
            jtx2[i]
= new JTextField("function", 10);
            jtx3[i]
= new JTextField("max value", 8);
            jb1[i]
= new JButton("Insert");// insert button
            jb2[i] = new JButton("Zero");// dispose
            System.out.println(i);
           
final int t = i;
            jb1[i].addActionListener(
new ActionListener()
            {
               
public void actionPerformed(ActionEvent e)
                {
                   
try
                    {
                        BufferedReader in
= new BufferedReader(new InputStreamReader(new FileInputStream("d://1.txt")));
                        jtx1[t].setText(in.readLine());
                        jtx2[t].setText(in.readLine());
                        jtx3[t].setText(in.readLine());
                        in.close();
                    }
                   
catch (IOException ex)
                    {
                        ex.printStackTrace();
                    }
                }
            });
            jb2[i].addActionListener(
new ActionListener()
            {
               
public void actionPerformed(ActionEvent e)
                {
                    jtx1[t].setText(
"");
                    jtx2[t].setText(
"");
                    jtx3[t].setText(
"");
                }
            });
        }
       
        JPanel editPanel
= new JPanel();
       
       
// JCheckBox group
        JCheckBox[] chan = new JCheckBox[chanNumber];
       
for (int i = 0; i < chanNumber; i++)
        {
           
int j = i + 1;
            String chanName
= "CHANNEL" + j;
            chan[i]
= new JCheckBox(chanName);
        }
        editPanel.setLayout(
new GridLayout(chanNumber, 1));
        JPanel[] subeditPanel
= new JPanel[chanNumber];
       
for (int i = 0; i < chanNumber; i++)
        {
            subeditPanel[i]
= new JPanel();
            subeditPanel[i].add(chan[i]);
            subeditPanel[i].add(jtx1[i]);
            subeditPanel[i].add(jtx2[i]);
            subeditPanel[i].add(jtx3[i]);
            subeditPanel[i].add(jb1[i]);
            subeditPanel[i].add(jb2[i]);
            editPanel.add(subeditPanel[i]);
           
// ScrollPanel.setViewportView(editPanel);
        }
        JScrollPane ScrollPanel
= new JScrollPane(editPanel);// ???
        ScrollPanel.setViewportView(editPanel);
        ScrollPanel.setWheelScrollingEnabled(
true);
        ScrollPanel.setPreferredSize(
new Dimension(20, 20));
        ScrollPanel.revalidate();
        ScrollPanel.repaint();
        JPanel jrp
= new JPanel();
        JButton saveAll
= new JButton("Save Channel Configuration");
        JButton disposeAll
= new JButton("Depose Channel Configuration");
        jrp.add(saveAll);
        jrp.add(disposeAll);
       
this.setLayout(new GridLayout(1,1));
       
this.add(ScrollPanel);
       
this.setSize(300,500);
    }

   
public static void main(String[] args)
    {
        JFrame jf
= new JFrame();
        jf.setName(
"test");
        configPanelCopy config
= new configPanelCopy();
        jf.add(config);
        jf.setVisible(
true);
        jf.setBounds(
10, 10, 600, 500);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

许向武老师CSDN是一个非常有价值的学习资源。作为一名IT从业者,我自己也是许老师的忠实粉丝。在CSDN上,许老师分享了大量的编程知识和经验,无论是从基础的编程语言学习到高级的框架应用,都能找到相关的教程和案例。他的文章通俗易懂,深入浅出,对于初学者来说非常友好。 许向武老师CSDN不仅有丰富的教程,还有很多干货技术分享。这些分享不仅包括了理论知识,还包括了实践经验和趋势预测。在CSDN上,许老师发布了很多开源项目和代码示例,这为我们提供了直接学习和参考的机会。他的技术分享非常有深度,既包含了理论知识的剖析,也有实际问题的解决思路和方法。 除此之外,许向武老师CSDN还有一系列关于IT行业的经验分享和职业发展的指导。他在这方面也非常有建树,为很多刚入行的IT从业者提供了宝贵的指导和建议。通过许老师CSDN,我们可以了解到行业内的最新动态和趋势,从而更好地规划自己的职业发展路径。 总之,许向武老师CSDN是我们学习和成长的重要支撑。他的文章既有深度又通俗易懂,包含了丰富的编程知识和经验分享。通过他的教程和技术分享,我们可以不断提升自己的技术水平,以适应IT行业的发展。我非常感谢老师的付出与分享,希望他能继续为我们带来更多有价值的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值