zoukankan      html  css  js  c++  java
  • Swing 实现的Gui链表

    https://gitee.com/dgwcode/MyJavaCode

    -Freight类可以实现的功能
    ·构造方法:初始空车厢有5个
    ·装货:当运往某地点的货物大于等于4个的时候,如果有空车箱,则先占用整个空车厢,如果没有空车厢,则在尾部新增一个车厢节点,存放货物(假设不存在超过7个的情况),并且从链表头部依次搜索是否有车厢还有空位,如果有,将多出来的零散货物分别装进车厢(如上图的5件B,先装满第二个车厢,然后搜索后再将剩余的一件装入第一车厢)
    ·卸货:当到达某地时,以B为例,搜索链表,如果某个车厢都是该地货物,则从链表中删除此节点,并将其他零散B地货物从车厢中去除。

    java Swing 实现的链表类

      1 package M;
      2 
      3 import java.awt.BorderLayout;
      4 import java.awt.Container;
      5 import java.awt.Dimension;
      6 import java.awt.FlowLayout;
      7 import java.awt.Font;
      8 
      9 import javax.swing.JButton;
     10 import javax.swing.JFrame;
     11 import javax.swing.JOptionPane;
     12 import javax.swing.JPanel;
     13 import javax.swing.JScrollPane;
     14 import javax.swing.JSplitPane;
     15 import javax.swing.JTextArea;
     16 
     17 class Carriage { /// 车厢
     18     int size = 0;// 表示当前车厢已经装了几个活物
     19     char a[] = new char[4];/// a用来装货物
     20     Carriage next;/// 连接下一个
     21 }
     22 public class A {
     23 
     24     private static int FLAG = -1;
     25     private final static int WIDTH = 800;
     26     private final static int HEIGHT = 400;
     27     private static Container container;
     28     private static JPanel UpPanel;
     29     private static JPanel bottomPanel;
     30     private static JButton Input0;
     31     private static JButton Input1;
     32     private static JButton Input2;
     33     private static JTextArea viewArea;
     34     private static JScrollPane jspane1;
     35     private static JSplitPane jsp;
     36     static int size = 5;/// 最初的5个车厢
     37     static Carriage Head = new Carriage();/// 最开始的都头结点
     38 
     39     public static void init() {
     40         // TODO Auto-generated constructor stub
     41         Carriage p = Head;
     42         for (int i = 0; i < 5; i++) {
     43             Carriage r = new Carriage();
     44             p.next = r;//// 连接
     45             p = r;
     46         }
     47     }
     48 
     49     public static void main(String[] args) {
     50         init();
     51         InitFrame();
     52 
     53     }
     54 
     55     public static void Logic(int a, char car, int num) {
     56         if (a == 0) {
     57             //System.out.println("准备打印链表状态");
     58             viewArea.append("准备打印链表状态
    ");
     59             for (int i = 0; i < size; i++) {
     60                 PrintCarUp();
     61                 //System.out.print("    ");
     62                 viewArea.append("    ");
     63             }
     64             //System.out.println();
     65             viewArea.append("
    ");
     66             Carriage p = Head.next;
     67             while (p != null) {
     68                 //System.out.print("*");
     69                 viewArea.append("*");
     70                 for (int i = 0; i < 4; i++) {
     71                     if (p.a[i] == 0)
     72                         //System.out.print(" ");
     73                         viewArea.append(" ");
     74                     else
     75                         //System.out.print(p.a[i]);
     76                         viewArea.append(String.valueOf(p.a[i]));
     77                 }
     78                 //System.out.print("*");
     79                 viewArea.append("*");
     80                 showNext();
     81                 p = p.next;
     82             }
     83             //System.out.println();
     84             viewArea.append("
    ");
     85             for (int i = 0; i < size; i++) {
     86                 PrintCarUp();
     87                 //System.out.print("    ");
     88                 viewArea.append("    ");
     89             }
     90             //System.out.println();
     91             viewArea.append("
    ");
     92         } else if (a == 1) {
     93             //System.out.println("请输入两个数,第一个为字母,第二个数字,例如 A 2");
     94             viewArea.append("请输入两个数,第一个为字母,第二个数字,例如 A 2");
     95             while (num != 0) {
     96                 Carriage p = Head;
     97                 while (p.next != null) {
     98                     if (p.next.size == 4)
     99                         p = p.next;
    100                     for (int i = 0; i < 4; i++) {
    101                         if (p.next.a[i] == 0) {
    102                             p.next.a[i] = car;
    103                             p.next.size++;
    104                             num--;
    105                         }
    106                         if (num == 0)
    107                             break;
    108                     }
    109                     if (num == 0)
    110                         break;
    111                     p = p.next;
    112                 }
    113                 while (num != 0) {
    114                     Carriage r = new Carriage();
    115                     p.next = r;
    116                     p = r;
    117                     for (int i = 0; i < 4 && num != 0; i++) {
    118                         r.a[i] = car;
    119                         num--;
    120                     }
    121                 }
    122             }
    123         } else {
    124             //System.out.println("请输入一个字母,例如 A");
    125             viewArea.append("请输入一个字母,例如 A");
    126             Carriage p = Head;
    127             int num1 = 0;
    128             while (p.next != null) {
    129                 for (int i = 0; i < 4; i++) {
    130                     if (p.next.a[i] == car) {
    131                         p.next.a[i] = 0;
    132                         num1++;
    133                     }
    134                 }
    135                 if (num1 == 4) {
    136                     Carriage r = p.next;
    137                     p.next = r.next;
    138                     r.next = null;/// 回收利用
    139                     size--;
    140                 } else {
    141                     p = p.next;
    142                 }
    143                 num1 = 0;
    144             }
    145         }
    146     }
    147 
    148     private static void InitFrame() {
    149         JFrame Main = new JFrame("Carriage");
    150         container = Main.getContentPane();
    151         container.setLayout(new BorderLayout());
    152         Main.setSize(WIDTH, HEIGHT);
    153         Main.setLocationRelativeTo(null);
    154         Main.setLayout(new BorderLayout());
    155         Main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    156 
    157         Input0 = new JButton("打印链表状态0");
    158         Input1 = new JButton("装货1");
    159         Input2 = new JButton("卸货2");
    160         UpPanel = new JPanel(new FlowLayout());
    161         bottomPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    162         viewArea = new JTextArea("选择按钮 0,1,2,输入-1退出");
    163         viewArea.setLineWrap(true);
    164         viewArea.setFont(new Font("黑体", Font.BOLD, 15));
    165         jspane1 = new JScrollPane(viewArea) {
    166             private static final long serialVersionUID = 1L;
    167 
    168             @Override
    169             public Dimension getPreferredSize() {
    170                 return new Dimension(780, 280);
    171             }
    172 
    173             @Override
    174             public Font getFont() {
    175                 return new Font("黑体", Font.BOLD, 12);
    176             }
    177         };
    178 
    179         UpPanel.setSize(WIDTH, 150);
    180         bottomPanel.setSize(WIDTH, 250);
    181 
    182         UpPanel.add(Input0);
    183         UpPanel.add(Input1);
    184         UpPanel.add(Input2);
    185 
    186         bottomPanel.add(jspane1);
    187 
    188         jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, UpPanel, bottomPanel);
    189         jsp.setDividerLocation(70); // 设置拆分窗格分频器初始位置
    190         jsp.setDividerSize(1); // 设置分频器大小
    191         container.add(jsp);
    192         // button lisenner
    193         Input0.addActionListener(e -> {
    194             FLAG=0;
    195             Logic(FLAG, '0', 0);
    196         });
    197         Input1.addActionListener(e -> {
    198             String inputValue = JOptionPane.showInputDialog("请输入两个数,第一个为字母,第二个数字,例如 A 2(注意空格)");
    199             // System.out.println("请输入两个数,第一个为字母,第二个数字,例如 A 2");
    200             if (inputValue.equals(" ") || inputValue == null) {
    201 
    202             } else {
    203                 char car = inputValue.charAt(0);
    204                 int num = inputValue.charAt(2) - '0';
    205                 FLAG=1;
    206                 Logic(FLAG, car, num);
    207                 // System.out.println(car+" "+num);
    208             }
    209         });
    210         Input2.addActionListener(e -> {
    211             String inputValue = JOptionPane.showInputDialog("请输入一个字母,例如 A");
    212             if (inputValue.equals(" ") || inputValue == null) {
    213 
    214             } else {
    215                 char car = inputValue.charAt(0);
    216                 FLAG=2;
    217                 Logic(FLAG, car, 0);
    218                 // System.out.println(car+" "+num);
    219             }
    220 
    221         });
    222 
    223         Main.setVisible(true);
    224     }
    225 
    226     private static void PrintCarUp() {
    227         //System.out.print("******");
    228         viewArea.append("******");
    229     }
    230 
    231     private static void PrintCarleft() {
    232         //System.out.print("*");
    233         viewArea.append("*");
    234     }
    235 
    236     private static void PrintCarright() {
    237         //System.out.print("*");
    238         viewArea.append("*");
    239     }
    240 
    241     private static void PrintCardown() {
    242         //System.out.print("******");
    243         viewArea.append("******");
    244     }
    245 
    246     private static void showNext() {
    247         //System.out.print("--->");
    248         viewArea.append("--->");
    249     }
    250 
    251     private static void print() {
    252         //System.out.println("请输入0 1 2 或者-1退出");
    253         viewArea.append("请输入0 1 2 或者-1退出");
    254         show();
    255     }
    256     public static void show() {
    257         //System.out.println("0-打印链表状态");
    258         //System.out.println("1-装货");
    259         //System.out.println("2-卸货");
    260         viewArea.append("0-打印链表状态");
    261         viewArea.append("1-装货");
    262         viewArea.append("2-卸货");
    263     }
    264 }
  • 相关阅读:
    今天开始用 VSU 2010
    Visual Studio 2010 模型设计工具 基本应用
    Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
    Enterprise Library 4.1 Security Block 快速使用图文笔记
    解决“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。”(图)
    一个Oracle存储过程示例
    Enterprise Library 4.1 Application Settings 快速使用图文笔记
    Oracle 10g for Windows 简体中文版的安装过程
    Oracle 11g for Windows 简体中文版的安装过程
    Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11008817.html
Copyright © 2011-2022 走看看