java中JTextArea和JPanel的问题

Hkmu 发布于 2012/07/24 13:25
阅读 3K+
收藏 0
最近写一个计算器小程序,将JTextArea放在JPanel里面之后,JTextArea不能设置文本了,如果不将JTextArea放在JPanel里面而是直接放在JFrame里面的话,JTextArea的大小可以改变。尝试了很多种方法,始终没能够解决这个问题,哪位大神可以指点指点?
加载中
0
Jeky
Jeky

楼主你这个不是不能设置了,是由于你把JTextArea的列数设置得太大了,所以导致你看不到光标了。

你试试把280改成10

另外不清楚为什么一个计算器的显示部分要用多行的JTextArea而不用JTextField。不过这可能是你的需求吧 有问题再@ 我吧

Hkmu
Hkmu
真的是这样诶,谢谢你帮我解决了一个困扰了我这么多天的问题。
0
子木007
子木007
没有说清楚哦   JTextArea不能设置文本了
0
Hkmu
Hkmu

这是直接向JFrame中添加时的情况,可以设置文本,但是JTextArea的大小可以随意改变。

这是先向JPanel中添加JTextArea,然后将JPanel添加到JFrame的情况,JTextArea中的文本无法设置了

逝水fox
逝水fox
具体楼主还是提供下源码吧
0
Hkmu
Hkmu

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Calculator {
 public static void main(String[] args) {
  Calculator calculator=new Calculator();
 }

 public Calculator()
 {
  Myframe mf=new Myframe();
 }
}
class Myframe extends JFrame
{
 public Myframe()
 {
  Mypanel mp1=new Mypanel();
//  JPanel jp=new JPanel();
  
  JTextArea jta=new JTextArea(3,280);//此处改动,先将JTextArea添加到JPanel
//  jp.add(jta);//,再向JFrame中添加JPanel
  
  add(jta,BorderLayout.NORTH);//直接向JFrame添加JTextArea
//  add(jp,BorderLayout.NORTH);
  add(mp1,BorderLayout.CENTER);
  
  setSize(280,280);
  setLocation(200,200);
  setResizable(false);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setVisible(true);
 }
}
//事件处理
class Mypanel extends JPanel
{
 public Mypanel()
 {
  this.setLayout(new GridLayout(5,4,5,5));
  
  JButton []jb=new JButton[20];
  String cal_s[]={"%","sqr","C","del","1","2","3","+",
    "4","5","6","-","7","8","9","*",".","0","=","/"};
  
  for(int i=0;i<20;i++)
  {
   jb[i]=make_button(cal_s[i]);
   jb[i].setActionCommand(i+"");
   jb[i].addActionListener(new ButtonListener());
   this.add(jb[i]);
  }
 }
 public JButton make_button(String s)
 {
   return new JButton(s);
 }
 
 class ButtonListener implements ActionListener
 {

  public void actionPerformed(ActionEvent arg0) {
    }
  
 }
}

效果图在上面哈

返回顶部
顶部