Implements interface using java swing.



a) Set the first column to be uneditable in JTable.

    /** Table model of the table. */
    final DefaultTableModel dataModel = new DefaultTableModel(
            new Object[][] {{1,"=",""}},
            new String[] {"criterion id", "operation name", "value"}
           
        ){

        // Set col 0 to uneditable.
        public boolean isCellEditable(int row, int col){
            if(col != 0){
                return true;
            }else{
                return false;
            }
        }

b) Implement  TreeView by using JButton/Graphics2d/Line2D.Double.

   
  fig1. the picture of TreeView.   
     1) Create class Node which contain these variable and methods.
                   Node parentNode;
                   Node rootNode;
                   List<Node> children;
                   int layer,level;
                   Line2D.Double line;
                   public void addChild(Node childNode);
                   public void setPrentLevel()
     2) Implement the addChild&setParentLevel method.
                 
                   public void addChild(Node childNode){
                         //make sure the child node is not exist.
                         //set the layer of child node to be layer of parent plus 1.
                         //set the level of child node to be the number of child node in this layer currently.
                         // if the child node is leaf node, then set the level of parent node recursively.
                   }

                   public void setParentLevel(){
                         //Make sure the parent is not null
                         //Set the level of parent to be the mid-level of all the children totally.
                         //Call setParentLevel of this parent node. recursive call.
                   }

c) Implement add/del row in JTable.

        // Handler "new criterion" event.
        buttonNewCriterion.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                indexOfCriterion++;
                dataModel.insertRow(tableView.getRowCount(), new Object[]{new JButton("1"),"=",""});
                tableView.setRowSelectionInterval(tableView.getRowCount() - 1,tableView.getRowCount() - 1);
               
            }
        });
       
        // Handler "new condition" event.
        buttonNewCondition.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                int selectedRow = tableView.getSelectedRow();
                Integer criterionIndex = (Integer)(dataModel.getValueAt(selectedRow, 0));
                dataModel.insertRow(selectedRow + 1, new Object[]{criterionIndex,"=",""});
                tableView.setRowSelectionInterval(selectedRow + 1,selectedRow + 1);
               
            }
        });   
       
        // Handler "delete condition" event.
        buttonDelCondition.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(tableView.getSelectedRow() != -1){
                    int selectedRow = tableView.getSelectedRow();
                    dataModel.removeRow(selectedRow);
                    if(selectedRow > 0){
                        tableView.setRowSelectionInterval(selectedRow - 1,selectedRow - 1);
                    }else if(tableView.getRowCount() > 0){
                        tableView.setRowSelectionInterval(0, 0);
                    }
                }
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用`javax.swing.Timer`类来实现记时功能。`Timer`类是Swing组件库中的一个定时器类,用于在指定的时间间隔内执行某个任务。 使用`Timer`类实现记时功能的步骤如下: 1. 创建一个`javax.swing.Timer`对象,并设置时间间隔和动作监听器。时间间隔指定定时器的触发时间,动作监听器则指定每次定时器触发时执行的代码。 2. 调用`start()`方法启动定时器。 3. 在动作监听器中编写相应的代码来实现记时功能。 下面是一个简单的记时器示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TimerExample extends JFrame implements ActionListener { private JLabel timeLabel; private Timer timer; private int seconds; public TimerExample() { super("Timer Example"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 100); setLayout(new FlowLayout()); // 创建一个标签来显示计时器的时间 timeLabel = new JLabel("Time: 0 seconds"); add(timeLabel); // 创建一个定时器对象,每隔1秒触发一次 timer = new Timer(1000, this); seconds = 0; // 启动定时器 timer.start(); } // 定时器动作监听器 public void actionPerformed(ActionEvent e) { seconds++; timeLabel.setText("Time: " + seconds + " seconds"); } public static void main(String[] args) { new TimerExample().setVisible(true); } } ``` 在这个例子中,我们创建了一个`JLabel`标签来显示计时器的时间,然后创建了一个定时器对象`timer`,并设置了时间间隔为1秒,并将动作监听器设置为当前对象。在动作监听器中,每次定时器触发时,将计时器的时间加1秒,并更新标签的显示内容。 注意:定时器的时间间隔单位是毫秒。在上面的例子中,我们设置时间间隔为1000毫秒,即1秒。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值