Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JFrame中创建GUI以执行冒泡、插入和快速排序,并向执行的操作添加代码_Java_Arrays_Swing_Jframe - Fatal编程技术网

Java 在JFrame中创建GUI以执行冒泡、插入和快速排序,并向执行的操作添加代码

Java 在JFrame中创建GUI以执行冒泡、插入和快速排序,并向执行的操作添加代码,java,arrays,swing,jframe,Java,Arrays,Swing,Jframe,我是Java新手。我将使用JFrame创建一个带有排序菜单选项的GUI,其中包括(冒泡、插入、快速排序)。我还要使用在JFrame中自动创建的action performed事件来输入代码,以便根据排序选择对数字进行排序。当用户在文本字段中输入不超过10个整数并选择气泡排序时,结果应显示在JLabel中。我已经运行了我的代码,没有错误,但是,我的结果没有出现在标签上。有人能帮忙解释一下什么可能被错误编码吗?有关气泡选择,请参见下面的“我的代码” private void jMenu1Action

我是Java新手。我将使用JFrame创建一个带有排序菜单选项的GUI,其中包括(冒泡、插入、快速排序)。我还要使用在JFrame中自动创建的action performed事件来输入代码,以便根据排序选择对数字进行排序。当用户在文本字段中输入不超过10个整数并选择气泡排序时,结果应显示在JLabel中。我已经运行了我的代码,没有错误,但是,我的结果没有出现在标签上。有人能帮忙解释一下什么可能被错误编码吗?有关气泡选择,请参见下面的“我的代码”

private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
         // TODO add your handling code here:
         int c, n, d, swap;
        Scanner in = new Scanner(System.in);
        n=in.nextInt();

        int array[] = new int[n];
        for (c = 0; c < n; c++)
      {
        array[c]= in.nextInt();

       for(c=0;c < (n-1);c++)
      {
          for (d=0; d < n-c-1;d++)
          {
          if(array[d]>array[d+1])
          {
              swap=array[d];
              array[d]=array[d+1];
              array[d+1]=swap;
          }
      }
      }
      for ( c=0;c<n;c++)
      {
         jTextArea1.setText(Integer.toString(array[c])); 
                 //Integer.toStri

      }

    }                                      

    }                                      
private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
int c、n、d、交换;
扫描仪输入=新扫描仪(系统输入);
n=in.nextInt();
int数组[]=新的int[n];
对于(c=0;c数组[d+1])
{
交换=数组[d];
数组[d]=数组[d+1];
数组[d+1]=交换;
}
}
}

对于(c=0;c我希望我的示例能够帮助您,尽管我做了一些个人决定,因为它并不十分清晰。无论如何,让我做一些精确的说明:默认情况下,如果您不从排序菜单中选择任何内容,它将调用气泡排序,并在启动时直接单击。此外,如果选中复选框,它将尝试计算升序也就是说,如果不是的话,就下降

对于isSortable()方法,您提到了一个关于10个数字的条件,我在代码中包含了这个条件,但是,我不知道您想要的是哪一个条件,所以我实现了一个return-true方法,让您完成,对于算法也是一样,我明确地输入了默认值来检查GUI是否正常。 至于分隔符,我假设您只想管理整数,并用“,”分隔,所以,如果您想丰富它:)

导入java.awt.BorderLayout;
导入java.awt.Component;
导入java.awt.Dimension;
导入java.awt.FlowLayout;
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JCheckBox;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JMenu;
导入javax.swing.JMenuBar;
导入javax.swing.JMenuItem;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
公共类分类器扩展JPanel实现ActionListener{
私有静态最终长serialVersionUID=-5548803322850070957L;
私有静态最终字符串BUBBLE\u SORT=“BUBBLE SORT”;
私有静态最终字符串插入\u SORT=“插入排序”;
私有静态最终字符串QUICK\u SORT=“QUICK SORT”;
专用静态最终字符串分隔符=“,”;
私有静态最终字符串NO_RESULT=“NO RESULT”;
私有静态最终尺寸文本\输入\尺寸=新尺寸(200,30);
私有静态最终JMenuBar菜单=新JMenuBar();
私有静态最终JMenu排序=新JMenu(“排序算法”);
私有静态final JMenuItem BUBBLE=新JMenuItem(BUBBLE_排序);
私有静态最终JMenuItem插入=新JMenuItem(插入\排序);
私有静态final JMenuItem QUICK_S=新JMenuItem(QUICK_SORT);
私有最终JTextField textfield输入=新JTextField();
私有最终JCheckBox复选框=新JCheckBox();
私有最终JLabel orderLabel=新JLabel(“升序排序”);
私有最终JLabel标签=新JLabel(“排序结果:”);
专用最终JLabel res=新JLabel(无结果);
选择私有静态字符串菜单;
公共分拣机(){
setLayout(新的GridLayout(2,1));
textfieldInput.setPreferredSize(文本输入尺寸);
JPanel top=新的JPanel();
top.setLayout(新的FlowLayout(10));
添加(textfieldInput);
添加(createPanelCheckbox());
add(createSortButton());
添加(顶部);
添加(createPanelResult());
}
私有组件createSortButton(){
JButton sortButton=新JButton(“启动”);
addActionListener(这个);
返回排序按钮;
}
私有最终JPanel createPanelResult(){
JPanel p=新的JPanel();
p、 setLayout(新的BorderLayout());
p、 添加(labRes,BorderLayout.WEST);
p、 添加(res,BorderLayout.CENTER);
返回p;
}
私有最终JPanel createPanelCheckbox(){
JPanel p=新的JPanel();
p、 setLayout(新的FlowLayout(10));
p、 添加(复选框);
p、 添加(订单标签);
返回p;
}
公共静态void main(字符串[]args){
JFrame f=新的JFrame();
f、 设置大小(500300);
f、 setLocationRelativeTo(空);
f、 添加(新分拣机());
f、 setJMenuBar(createMenu());
f、 setVisible(真);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
私有静态jmenubarcreatemenu(){
BUBBLE.addActionListener(新的MenuItemListener());
排序。添加(气泡);
addActionListener(新的MenuItemListener());
排序.添加(插入);
QUICK_.addActionListener(新的MenuItemListener());
排序。添加(快速);
菜单。添加(排序);
返回菜单;
}
静态类MenuItemListener实现ActionListener{
@凌驾
已执行的公共无效操作(操作事件e){
selectedMenu=e.getActionCommand();
}
}
@凌驾
已执行的公共无效操作(操作事件e){
String content=textfieldInput.getText();
字符串[]parsedNumber=content.split(分隔符);
if(可移植(解析数)&&parsedNumbers.length<10){
int[]结果=null;
如果(selectedMenu==null
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
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.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Sorter extends JPanel implements ActionListener {
    private static final long serialVersionUID = -5548803322850070957L;
    private static final String BUBBLE_SORT = "bubble sort";
    private static final String INSERTION_SORT = "insertion sort";
    private static final String QUICK_SORT = "quick sort";
    private static final String SEPARATOR = ",";
    private static final String NO_RESULT = "no result";

    private static final Dimension TEXT_INPUT_DIM = new Dimension(200, 30);

    private static final JMenuBar MENU = new JMenuBar();
    private static final JMenu SORT = new JMenu("Sorting Algorithms");
    private static final JMenuItem BUBBLE = new JMenuItem(BUBBLE_SORT);
    private static final JMenuItem INSERTION = new JMenuItem(INSERTION_SORT);
    private static final JMenuItem QUICK_S = new JMenuItem(QUICK_SORT);

    private final JTextField textfieldInput = new JTextField();
    private final JCheckBox checkbox = new JCheckBox();
    private final JLabel orderLabel = new JLabel("sort in ascending order");

    private final JLabel labRes = new JLabel("sorted result : ");
    private final JLabel res = new JLabel(NO_RESULT);

    private static String selectedMenu;

    public Sorter() {
        setLayout(new GridLayout(2, 1));
        textfieldInput.setPreferredSize(TEXT_INPUT_DIM);

        JPanel top = new JPanel();
        top.setLayout(new FlowLayout(10));
        top.add(textfieldInput);
        top.add(createPanelCheckbox());
        top.add(createSortButton());
        add(top);

        add(createPanelResult());
    }

    private Component createSortButton() {
        JButton sortButton = new JButton("Launch");
        sortButton.addActionListener(this);
        return sortButton;
    }

    private final JPanel createPanelResult() {
        JPanel p = new JPanel();
        p.setLayout(new BorderLayout());
        p.add(labRes, BorderLayout.WEST);
        p.add(res, BorderLayout.CENTER);
        return p;
    }

    private final JPanel createPanelCheckbox() {
        JPanel p = new JPanel();
        p.setLayout(new FlowLayout(10));
        p.add(checkbox);
        p.add(orderLabel);
        return p;
    }

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setSize(500, 300);
        f.setLocationRelativeTo(null);
        f.add(new Sorter());
        f.setJMenuBar(createMenu());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private static JMenuBar createMenu() {
        BUBBLE.addActionListener(new MenuItemListener());
        SORT.add(BUBBLE);
        INSERTION.addActionListener(new MenuItemListener());
        SORT.add(INSERTION);
        QUICK_S.addActionListener(new MenuItemListener());
        SORT.add(QUICK_S);
        MENU.add(SORT);
        return MENU;
    }

    static class MenuItemListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            selectedMenu = e.getActionCommand();
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String content = textfieldInput.getText();
        String[] parsedNumbers = content.split(SEPARATOR);
        if (isSortable(parsedNumbers) && parsedNumbers.length < 10) {
            int[] result = null;

            if(selectedMenu==null)
                selectedMenu = BUBBLE_SORT;

            switch (selectedMenu) {
            case BUBBLE_SORT:
                result = bubbleSort(checkbox.isSelected());
                break;
            case INSERTION_SORT:
                result = insertionSort(checkbox.isSelected());
                break;
            case QUICK_SORT:
                result = quickSort(checkbox.isSelected());
                break;

            }
            res.setText(result == null ? NO_RESULT : fillResultLabel(result));
        }
    }

    private String fillResultLabel(int[] result) {
        StringBuilder res = new StringBuilder();
        for (int nb : result) {
            res.append(nb + " ");
        }
        return res.toString();
    }

    private final boolean isSortable(String[] numbers) {
        return true;
    }

    private int[] bubbleSort(boolean sortAscending) {
        return new int[]{1,2,3,4};
    }

    private int[] insertionSort(boolean sortAscending) {
        return new int[]{5,6,7,8};
    }

    private int[] quickSort(boolean sortAscending) {
        return new int[]{9,10,11,12};
    }
}