使用GridLayout(1,1)的滚动条

时间:2017-10-11 11:24:28

标签: java swing jscrollpane layout-manager jtextarea

我在这里用Swing编写Java程序,但是我遇到了一些麻烦。我可以在文本区域添加滚动条:

    //Text area
    public static JTextArea output = new JTextArea("======================== The Outputs HERE ================================");

   // JBouton 
   private JButton bouton = new JButton();
   private JButton tpBouton = new JButton("TP 205");

   // JLabel
   private JLabel label = new JLabel("TP DE 205");
   public static JLabel initialState = new JLabel("TEST");
   public static JLabel state = new JLabel("");
   public static JLabel tableShow = new JLabel("Entrer l'element a rechercher : ");
   public static JLabel finalState = new JLabel("");
   private JLabel explicitText = new JLabel();

   // JTextField
   private JFormattedTextField input = new JFormattedTextField(NumberFormat.getIntegerInstance());
    //JTextField input = new JTextField("Choisir l'element a rechercher ...");

   // JPanel
   JPanel mainBGRadio = new JPanel();
   JPanel secondBGRadio = new JPanel();
   JPanel b7 = new JPanel();
   JPanel main = new JPanel();
   JPanel container = new JPanel();
   JPanel outPutField = new JPanel();

   // Ensemble
   private Ensemble set = new Ensemble();

   // JRadioButton

   // for the main group
   private JRadioButton lookup = new JRadioButton("Look Up");
   private JRadioButton insert = new JRadioButton("Insert");
   private JRadioButton delete = new JRadioButton("Delete");
   private JRadioButton difference = new JRadioButton("Difference");
   private JRadioButton intersection = new JRadioButton("Intersection");
   private JRadioButton union = new JRadioButton("Union");

   // for the second group

   private JRadioButton sortedList = new JRadioButton("liste Trie");
   private JRadioButton simpleList = new JRadioButton("liste Simple");
   private JRadioButton doubleList = new JRadioButton("liste Avec Doublons");
   private JRadioButton simpleVector = new JRadioButton("vecteur Simple");
   private JRadioButton sortedVector = new JRadioButton("vecteur Trie");
   private JRadioButton booleanVector = new JRadioButton("vecteur Boolean");

    // JButtonGroup

    // some bouton group

   private ButtonGroup mainBG = new ButtonGroup();
   private ButtonGroup secondBG = new ButtonGroup();

   // ArrayList

   private ArrayList<JRadioButton> radioList = new ArrayList(){{
        add(lookup);
        add(insert);
        add(delete);
        add(union);
        add(intersection);
        add(difference);
    }};

    private ArrayList<JRadioButton> radioFunctionList = new ArrayList(){{
        add(sortedList);
        add(doubleList);
        add(simpleList);
        add(simpleVector);
        add(sortedVector);
        add(booleanVector);
    }};

    // Font

   Font font = new Font("ubuntu", Font.BOLD, 45);
   Font explicitFont = new Font("ubuntu", Font.BOLD, 15);
   Font stateFont = new Font("ubuntu", Font.BOLD, 25);
   Font textareaFont = new Font("ubuntu", Font.ITALIC, 19);


   public Fenetre(){

   }

/**
 * this is the main window with all its contains element
 */
public void montrer(){

        // window Params
        this.setTitle("TP 205");
        this.setSize(800, 800);
        this.setLocationRelativeTo(null);

        // bouton configuration

        bouton.setText("Simuler");
        bouton.addActionListener(new BtnClass());
        tpBouton.addActionListener(new BtnClass());
        tpBouton.setBackground(Color.BLACK);
        tpBouton.setFont(explicitFont);
        tpBouton.setForeground(Color.WHITE);


        // JLabel configuration

        explicitText.setText("Bienvenur sur notre tp de 205");
        label.setFont(font);
        explicitText.setFont(explicitFont);
        explicitText.setForeground(Color.WHITE);
        label.setForeground(Color.WHITE);
        state.setForeground(Color.WHITE);
        state.setFont(stateFont);
        initialState.setForeground(Color.WHITE);
        initialState.setFont(stateFont);
        finalState.setForeground(Color.WHITE);
        finalState.setFont(stateFont);

        // input configuration

        input.setFont(explicitFont);
        input.setPreferredSize(new Dimension(150, 30));
        input.setForeground(Color.BLACK);
        input.setMaximumSize(new Dimension(Integer.MAX_VALUE, input.getMinimumSize().height));
        output.setFont(textareaFont);
        output.setWrapStyleWord(true);
        output.setLineWrap(true);

        JScrollPane scrool = new JScrollPane();
        scrool.setBorder(BorderFactory.createTitledBorder("LIONEL"));
        scrool.setViewportView(output);

        // layout configuration

        JPanel b1 = new JPanel();
        b1.setLayout(new BoxLayout(b1, BoxLayout.LINE_AXIS));
        b1.add(label);

        JPanel b2 = new JPanel();
        b2.setLayout(new BoxLayout(b2, BoxLayout.LINE_AXIS));
        b2.add(explicitText);

        JPanel b3 = new JPanel();
        b3.setLayout(new BoxLayout(b3, BoxLayout.LINE_AXIS));
        b3.add(tpBouton);
        b3.add(bouton);

        JPanel b4 = new JPanel();
        b4.setLayout(new BoxLayout(b4, BoxLayout.LINE_AXIS));
        b4.add(state);

        JPanel b5 = new JPanel();
        b5.setLayout(new BoxLayout(b5, BoxLayout.LINE_AXIS));
        b5.add(finalState);

        JPanel b6 = new JPanel();
        b6.setLayout(new BoxLayout(b6, BoxLayout.LINE_AXIS));
        b6.add(initialState);

        b7.setLayout(new BoxLayout(b7, BoxLayout.LINE_AXIS));
        b7.add(tableShow);
        b7.add(input);
        b7.setVisible(false);

        this.setEventSimpleRadio();
        this.setEventSecondRadio();
        secondBGRadio.setVisible(false);
        mainBGRadio.setLayout(new BoxLayout(mainBGRadio, BoxLayout.LINE_AXIS));
        secondBGRadio.setLayout(new BoxLayout(secondBGRadio, BoxLayout.LINE_AXIS));
        container.setLayout(new BoxLayout(container, BoxLayout.PAGE_AXIS));
        main.setLayout(new GridLayout(2, 1));

        b1.setBackground(Color.ORANGE);
        b2.setBackground(Color.ORANGE);
        b3.setBackground(Color.ORANGE);
        b4.setBackground(Color.ORANGE);
        b5.setBackground(Color.ORANGE);
        b6.setBackground(Color.ORANGE);
        b7.setBackground(Color.ORANGE);


        mainBGRadio.setBackground(Color.ORANGE);
        secondBGRadio.setBackground(Color.ORANGE);

        container.add(b1);
        container.add(b2);
        container.add(mainBGRadio);
        container.add(secondBGRadio);
        container.add(b7);
        container.add(b6); 
        container.add(b4); 
        container.add(b5);

        container.add(b3);
        outPutField.add(output);
        outPutField.add(scrool);
        outPutField.setLayout(new GridLayout(0,1, 5, 5));
        container.setBackground(Color.ORANGE);
        main.add(container);
        main.add(outPutField);


        this.setContentPane(main);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

以下是它产生的屏幕截图:

code image

我正在寻找如何解决这个问题,并在文本区域溢出时显示滚动条并有一个小滚动条。

1 个答案:

答案 0 :(得分:1)

使用JTextArea的基本逻辑是:

//public static JTextArea output = new JTextArea("==== The Outputs HERE =====;
public static JTextArea output = new JTextArea(5, 30);

这将允许您创建一个包含5行数据和每行约30个字符的文本区域。一旦您有超过5行数据,就会出现滚动条。

然后在构造函数中,您可以指定默认文本:

output = "========= The Outputs HERE ================================");

此外,您不应该在所有变量上使用static关键字。这表明您的班级设计不正确。阅读How to Use Text Area上Swing教程中的部分,了解如何更好地设计课程的工作示例。

为所有Swing基础知识保留教程的链接。