2017-10-11 165 views
-1

在这里,我正在用Swing编写一个Java程序,但我遇到了一些麻烦。我可以将滚动条添加到我的文字区域:带GridLayout的滚动条(1,1)

//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

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

+4

请发布有效[mcve]。你的代码有太多不需要的代码,包括大量不相关的组件,以及没有足够的代码 - 我们没有足够的编译或运行代码。也不要将您的JTextfield添加到多个容器。您将它添加到视口(好)和JPanel(坏)。最后一点将它从视口中移除,可能是您没有看到它的原因。 –

+0

换句话说,摆脱这一行:'outPutField.add(output);'因为它让你感到困惑。 –

+0

thakns ...问题是...该程序有4个类文件,每个类文件都有200多行...我之所以没有在这里导入它的原因... –

回答

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关键字。这显示你的班级设计不正确。请阅读Swing教程How to Use Text Area中的部分,以便为您展示如何更好地设计课程。

保留所有Swing基础知识的指南。

+0

thakns。我已经这样做了,因为许多其他的孩子班在其他班上使用那些可变的静态开发 –

+0

@LionelT,'thakns。 - - 很高兴它有帮助。不要忘了点击勾号“接受”答案,以便人们知道问题已经解决。 – camickr

+0

'我这样做是因为......' - 这又是一个可怕的设计。这不是应该如何使用静态关键字。本教程向您展示了一个更好的设计。学习更好的设计方法,使您的代码更易于维护和调试。 – camickr