如何在Java中设置组布局的可滚动文本区域?

如何在Java中设置组布局的可滚动文本区域?,java,swing,jframe,jtextarea,keylistener,Java,Swing,Jframe,Jtextarea,Keylistener,我有个问题。每次,当我在TextArea中添加更多符号(数字)时,它都不会使其可滚动。编辑:现在它可以按我的要求工作了。我只需要换两个字。谢谢 class NumOnly extends KeyAdapter { private String Atlauts = "[^0-9]"; //Allowed Buttons. public void keyReleased(KeyEvent e) { //Key event. What happens when the bu

我有个问题。每次,当我在TextArea中添加更多符号(数字)时,它都不会使其可滚动。编辑:现在它可以按我的要求工作了。我只需要换两个字。谢谢

class NumOnly extends KeyAdapter {  

    private String Atlauts = "[^0-9]";  //Allowed Buttons.
    public void keyReleased(KeyEvent e) {   //Key event. What happens when the button is pressed
        String curText = ((JTextComponent) e.getSource()).getText();  //Current text
        curText = curText.replaceAll(Atlauts, ""); 

        ((JTextComponent) e.getSource()).setText(curText);  
    }  
}  

public class kursadarbs{

    public static void main(String[] args) {

        JFrame frame= new JFrame();
        JPanel panel= new JPanel();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //components
        JLabel label1= new JLabel("Insert first number: ");

        final JTextField textbox1= new JTextField(10);
        textbox1.addKeyListener(new NumOnly());

        JLabel label2= new JLabel("Insert second number: ");

        final JTextField textbox2= new JTextField(10);
        textbox2.addKeyListener(new NumOnly());

        JButton button= new JButton("Calculate");

        final JTextArea textarea= new JTextArea(20,20); //Result is stored in there
        textarea.setEditable(false);
        textarea.setLineWrap(true);
        JScrollPane scroll= new JScrollPane(textarea);
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        textarea.setWrapStyleWord(true);
        textarea.setBorder(new TitledBorder(new EtchedBorder(), "Result"));




        GroupLayout groupLayout = new GroupLayout(panel);
        panel.setLayout(groupLayout);  
        groupLayout.setAutoCreateGaps(true);      
        groupLayout.setAutoCreateContainerGaps(true); 

        GroupLayout.SequentialGroup HorSGroup= groupLayout.createSequentialGroup(); 
        GroupLayout.SequentialGroup VerSGroup= groupLayout.createSequentialGroup(); 

        GroupLayout.ParallelGroup HParallelGroup1= groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING);
        GroupLayout.ParallelGroup HParallelGroup2= groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING);
        GroupLayout.ParallelGroup HParallelGroup3= groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING);

        HParallelGroup1.addComponent(label1); //adding components to the group
        HParallelGroup1.addComponent(label2);
        HParallelGroup2.addComponent(textbox1);
        HParallelGroup2.addComponent(textbox2);
        HParallelGroup2.addComponent(scroll);
        HParallelGroup3.addComponent(button);

        HorSGroup.addGroup(HParallelGroup1);
        HorSGroup.addGroup(HParallelGroup2);
        HorSGroup.addGroup(HParallelGroup3);

        GroupLayout.ParallelGroup VerPGroup1= groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE); //Vertical group
        GroupLayout.ParallelGroup VerPGroup2= groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE);
        GroupLayout.ParallelGroup VerPGroup3= groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE);

        VerPGroup1.addComponent(label1); //adding components to groups
        VerPGroup1.addComponent(textbox1);
        VerPGroup1.addComponent(button);
        VerPGroup2.addComponent(label2);
        VerPGroup2.addComponent(textbox2);
        VerPGroup3.addComponent(scroll);

        VerSGroup.addGroup(VerPGroup1);
        VerSGroup.addGroup(VerPGroup2);
        VerSGroup.addGroup(VerPGroup3);

        groupLayout.setHorizontalGroup(HorSGroup);
        groupLayout.setVerticalGroup(VerSGroup);




        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (int) (dimension.getWidth()/4);
        int y = (int) (dimension.getHeight()/4);
        frame.setLocation(x, y); //Places the program almost in the middle

        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e)
            {
               //what happens when "calculate" is pressed.
                String first = null, second = null; 
                int first1=0, second1=0;

               first= textbox1.getText();  //getting textbox1 value.
               second= textbox2.getText();

               if(!first.isEmpty() && !second.isEmpty()) //If fields are not empty..
               {
                   first1= Integer.parseInt(first);  //string to integer.
                   second1= Integer.parseInt(second);

                   if(first1<second1){ //Check, if the first number is bigger than second.
                   System.out.println(first1);                 
                   textarea.append(first+"\n");
                   }// Ja ir pareizi 
                   else 
                   {
                       JOptionPane.showMessageDialog(null,"Incorrect data. " );
                   }
               } else 
               {
                   JOptionPane.showMessageDialog(null,"Incorrect data." );
               }
            }
        });


        frame.add(panel); //add the panel
        frame.setSize(500, 500); //program size in pix
        frame.setResizable(false); //putting that the frame can't change size
        frame.setTitle("Kursa darbs");
        frame.setVisible(true);


    }

}
类nummonly扩展KeyAdapter{
私有字符串Atlauts=“[^0-9]”;//允许的按钮。
public void keyReleased(KeyEvent e){//Key事件。按下按钮时会发生什么
字符串curText=((JTextComponent)e.getSource()).getText();//当前文本
curText=curText.replaceAll(Atlauts,“”);
((JTextComponent)e.getSource()).setText(CurtText);
}  
}  
公共类库尔萨达姆{
公共静态void main(字符串[]args){
JFrame=新JFrame();
JPanel面板=新的JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//组成部分
JLabel label1=新的JLabel(“插入第一个数字:”);
最终JTextField textbox1=新的JTextField(10);
textbox1.addKeyListener(new NumOnly());
JLabel label2=新的JLabel(“插入第二个数字:”);
最终JTextField textbox2=新的JTextField(10);
textbox2.addKeyListener(new NumOnly());
JButton按钮=新JButton(“计算”);
final JTextArea textarea=新的JTextArea(20,20);//结果存储在其中
textarea.setEditable(false);
textarea.setLineWrap(true);
JScrollPane scroll=新的JScrollPane(textarea);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL\u SCROLLBAR\u ALWAYS);
textarea.setWrapStyleWord(true);
textarea.setboorder(新标题边框(新蚀刻边框(),“结果”);
GroupLayout GroupLayout=新的GroupLayout(面板);
panel.setLayout(groupLayout);
groupLayout.setAutoCreateGaps(true);
groupLayout.setAutoCreateContainerGaps(true);
GroupLayout.SequentialGroup HorSGroup=GroupLayout.CreateSquentialGroup();
GroupLayout.SequentialGroup VerSGroup=GroupLayout.CreateSquentialGroup();
GroupLayout.ParallelGroup HParallelGroup1=GroupLayout.createParallelGroup(GroupLayout.Alignment.LEADING);
GroupLayout.ParallelGroup HParallelGroup2=GroupLayout.createParallelGroup(GroupLayout.Alignment.LEADING);
GroupLayout.ParallelGroup HParallelGroup3=GroupLayout.createParallelGroup(GroupLayout.Alignment.LEADING);
HParallelGroup1.addComponent(label1);//将组件添加到组中
HParallelGroup1.addComponent(标签2);
HParallelGroup2.addComponent(textbox1);
HParallelGroup2.addComponent(textbox2);
HParallelGroup2.addComponent(滚动);
HParallelGroup3.addComponent(按钮);
HorSGroup.addGroup(HParallelGroup1);
HorSGroup.addGroup(HParallelGroup2);
HorSGroup.addGroup(HParallelGroup3);
GroupLayout.ParallelGroup VerPGroup1=GroupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE);//垂直组
GroupLayout.ParallelGroup VerPGroup2=GroupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE);
GroupLayout.ParallelGroup VerPGroup3=GroupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE);
VerPGroup1.addComponent(label1);//将组件添加到组中
VerPGroup1.addComponent(textbox1);
VerPGroup1.addComponent(按钮);
VerPGroup2.addComponent(label2);
VerPGroup2.addComponent(textbox2);
VerPGroup3.addComponent(滚动);
VerSGroup.addGroup(VerpGroup 1);
VerSGroup.addGroup(VerpGroup 2);
VerSGroup.addGroup(VerpGroup 3);
groupLayout.setHorizontalGroup(HorSGroup);
groupLayout.setVerticalGroup(VerSGroup);
维度=Toolkit.getDefaultToolkit().getScreenSize();
int x=(int)(dimension.getWidth()/4);
int y=(int)(dimension.getHeight()/4);
设置位置(x,y);/ /几乎将程序放置在中间
addActionListener(新建ActionListener()){
已执行的公共无效操作(操作事件e)
{
//按下“计算”时会发生什么情况。
字符串first=null,second=null;
int first1=0,second1=0;
first=textbox1.getText();//获取textbox1值。
second=textbox2.getText();
if(!first.isEmpty()&&!second.isEmpty())//如果字段不为空。。
{
first1=Integer.parseInt(first);//字符串到整数。
second1=Integer.parseInt(秒);
如果(第一个1
  • 永远不要用

  • 改为使用(允许插入
    字符串
    复制粘贴
    系统剪贴板
    ,例如)

  • 用于过滤不需要的
    字符

  • 使用
    数字格式化程序
    而不是从解析数字,或者使用
    模式
    文档过滤器
    添加到
    JTextField
    以仅过滤数字


不要将
JTextArea
添加到组中,而是添加包含它的
JScrollPane


不幸的是,因为我不会说拉脱维亚语(?)我无法理解GUI应该做什么,或者它应该如何工作。请通过Google translate运行注释、属性和类名、按钮文本和标签。我修复了注释,但它们没有提供很多新信息。该程序的主要思想…嗯,我正在制作一个搜索素数的程序两个插入的数字(分别插入到textbox1和textbox2中)。我知道如何找到素数,但我不知道如何制作框架。有点愚蠢,但是……我是一名学生,我喜欢学习一些新的东西。实际上,这对我来说甚至不是强制性的,但我想要它。谢谢你,这是一种魅力:)现在我要学习更多关于Java的知识。
    //HParallelGroup2.addComponent(textarea);
    HParallelGroup2.addComponent(scroll);
    HParallelGroup3.addComponent(button);

    HorSGroup.addGroup(HParallelGroup1); //Horizontālās grupas tiek pievienotas sakārtotajai grupai
    HorSGroup.addGroup(HParallelGroup2);
    HorSGroup.addGroup(HParallelGroup3);

    GroupLayout.ParallelGroup VerPGroup1= groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE); //Izveido Vertikālās grupas.
    GroupLayout.ParallelGroup VerPGroup2= groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE);
    GroupLayout.ParallelGroup VerPGroup3= groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE);

    VerPGroup1.addComponent(label1); //Pievieno objektus
    VerPGroup1.addComponent(textbox1);
    VerPGroup1.addComponent(button);
    VerPGroup2.addComponent(label2);
    VerPGroup2.addComponent(textbox2);
    //VerPGroup3.addComponent(textarea);
    VerPGroup3.addComponent(scroll);