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 }
  • 相关阅读:
    moss文档库操作的几个类
    Infopath web浏览中的多项选择功能
    国际软件项目经理的七大素质转
    InfoPath中的Rich Text Box中如何加“回车”
    设计模式——策略模式
    设计模式——状态模式
    设计模式——备忘模式
    设计模式——中介者模式
    关与BaseDataList类型绑定ArrayList
    设计模式——命令模式
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11008817.html
Copyright © 2011-2022 走看看