本人java菜鸟,请高手指点JTextArea中加了滚动条不显示,JLabel的定位有问题,JTextArea不显示,只有在按下按钮后才有显示,请高手指点

J5175 2010-12-16 01:16:50
package File;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class File {


public JFrame jf;
public Container c;
public JScrollPane js=new JScrollPane();
public JScrollPane js1;
public JScrollPane js2;
public JTextArea jt1;
public JTextArea jt2;
private int type=0;

public File(){

jf=new JFrame();
c=jf.getContentPane();
c.setBounds(0, 0, 600, 560);
c.setLayout(null);
jf.setTitle("文件转置");
jf.setSize(600,560);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel label1=new JLabel("原始文件:");
label1.setBounds(0,5,150,20);
jf.add(label1); // 添加"原始文件:"

JLabel label2=new JLabel("转置后的文件:");
label1.setBounds(300,5,120,20);
c.add(label2); // 添加"转置后的文件:"


JButton button1=new JButton("输入文本");
button1.addActionListener(new CreateListener());
button1.setBounds(40, 500,100 , 20); //添加"输入文本"按钮
c.add(button1);

JButton button2=new JButton("倒置");
button2.addActionListener(new SwitchListener());
button2.setBounds(200, 500, 100, 20);
c.add(button2); //添加"倒置"按钮

JButton button3=new JButton("退出系统");
button3.addActionListener(new ExitListener());
button3.setBounds(360,500,100,20);
c.add(button3); //添加"退出系统"按钮

js1=new JScrollPane();
js1.setBounds(285, 31,10, 460);
js2=new JScrollPane();
js2.setBounds(585, 31,10 , 460); //设置滚动条

jt1=new JTextArea(100,100);
jt1.setBounds(0, 31, 295, 460);
jt1.add(js1);
jt1.setEditable(false);
jt1.setVisible(true);
c.add(jt1); //添加第一个文本区用于输入源文件,并将滚动条添加到第一个文本区


jt2=new JTextArea(100,100);
jt2.setBounds(305, 31, 290,460);
jt2.setVisible(true);
jt2.setEditable(false);
jt1.add(js2);
c.add(jt2); //添加第二个文本区用于显示到之后的文本,并将滚动条添加到第二个文本区

} //以上代码用于定义系统的框架


public class CreateListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
type=1;
jt1.setEditable(true);
}

} //"输入文本"按钮的事件监听器

public class SwitchListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(type==0){
JOptionPane.showMessageDialog(null, "请先输入文本!");
jt2.setEditable(false);
}
else{
//type=2;
jt2.setEditable(true);
}
}

} //"倒置"按钮的事件监听器,该功能还没有实现

public class ExitListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}

} //"退出系统"按钮的事件监听器

public static void main(String[] argos){
new File();
}
}
...全文
230 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
J5175 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sunyiz 的回复:]
仔细看了下,你好多组件都用的不对哦
改了下给你,你对比下区别吧
JScrollPane应该包容JTextArea
而不是让JTextArea去add一个JScrollPane


Java code
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionL……
[/Quote]


改好了!谢谢啦!
sunyiz 2010-12-16
  • 打赏
  • 举报
回复
仔细看了下,你好多组件都用的不对哦
改了下给你,你对比下区别吧
JScrollPane应该包容JTextArea
而不是让JTextArea去add一个JScrollPane

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class File {

private JFrame jf;
private Container c;
private JScrollPane js1;
private JScrollPane js2;
private JTextArea jt1;
private JTextArea jt2;
private int type = 0;

public File() {

jf = new JFrame();
c = jf.getContentPane();
c.setBounds(0, 0, 600, 560);
c.setLayout(null);
jf.setTitle("文件转置");
jf.setSize(600, 560);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel label1 = new JLabel("原始文件:");
label1.setBounds(0, 5, 150, 20);
c.add(label1); // 添加"原始文件:"

JLabel label2 = new JLabel("转置后的文件:");
label2.setBounds(300, 5, 120, 20);
c.add(label2); // 添加"转置后的文件:"

JButton button1 = new JButton("输入文本");
button1.addActionListener(new CreateListener());
button1.setBounds(40, 500, 100, 20); // 添加"输入文本"按钮
c.add(button1);

JButton button2 = new JButton("倒置");
button2.addActionListener(new SwitchListener());
button2.setBounds(200, 500, 100, 20);
c.add(button2); // 添加"倒置"按钮

JButton button3 = new JButton("退出系统");
button3.addActionListener(new ExitListener());
button3.setBounds(360, 500, 100, 20);
c.add(button3); // 添加"退出系统"按钮

jt1 = new JTextArea();
jt1.setEditable(false);
jt1.setVisible(true);
jt2 = new JTextArea();
jt2.setVisible(true);
jt2.setEditable(false);
js1 = new JScrollPane(jt1);
js1.setBounds(0, 31, 290, 460);
js2 = new JScrollPane(jt2);
js2.setBounds(300, 31, 290, 460); // 设置滚动条
c.add(js1); // 添加第一个文本区用于输入源文件,并将滚动条添加到第一个文本区
c.add(js2); // 添加第二个文本区用于显示到之后的文本,并将滚动条添加到第二个文本区
jf.setVisible(true);
} // 以上代码用于定义系统的框架

public class CreateListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
type = 1;
jt1.setEditable(true);
}
} // "输入文本"按钮的事件监听器

public class SwitchListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (type == 0) {
JOptionPane.showMessageDialog(null, "请先输入文本!");
jt2.setEditable(false);
} else {
jt2.setEditable(true);
}
}
} // "倒置"按钮的事件监听器,该功能还没有实现

public class ExitListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}

} // "退出系统"按钮的事件监听器

public static void main(String[] argos) {
new File();
}
}
sunyiz 2010-12-16
  • 打赏
  • 举报
回复
        JLabel label2 = new JLabel("转置后的文件:");
label1.setBounds(300, 5, 120, 20);
c.add(label2); // 添加"转置后的文件:"



注意这个,应该是
        JLabel label2 = new JLabel("转置后的文件:");
label2.setBounds(300, 5, 120, 20);
c.add(label2); // 添加"转置后的文件:"

J5175 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunyiz 的回复:]
引用 3 楼 j5175 的回复:
jf.setVisible(true);为什么一定要放到构造方法最后面

这个要从Swing的界面在什么时候会刷新说起
当你往一个组件中add了另一个组件的时候
这个时候界面是不会刷新的,此时,
就需要你人为的调用一下updateUI()方法来更新相关的组件
而你调用JFrame的setVisible(true);方法时,
它会对其包含的所有组件……
[/Quote]


谢啦!不过,JLabel的显示还是不是我要的位置,我觉得我的位置写的没问题,还有滚动条也不对!
请高手指教

sunyiz 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 j5175 的回复:]
jf.setVisible(true);为什么一定要放到构造方法最后面
[/Quote]
这个要从Swing的界面在什么时候会刷新说起
当你往一个组件中add了另一个组件的时候
这个时候界面是不会刷新的,此时,
就需要你人为的调用一下updateUI()方法来更新相关的组件
而你调用JFrame的setVisible(true);方法时,
它会对其包含的所有组件进行一次updateUI()
就能全部显示出来了
所以如果你在jf.setVisible(true);之后再添加的组件
你又没updateUI
就显示不出来罗
J5175 2010-12-16
  • 打赏
  • 举报
回复
jf.setVisible(true);为什么一定要放到构造方法最后面
Jlins 2010-12-16
  • 打赏
  • 举报
回复
JLabel label2=new JLabel("转置后的文件:");
label1.setBounds(300,5,120,20);

label2.setBounds(300,5,120,20); ?
sunyiz 2010-12-16
  • 打赏
  • 举报
回复
jf.setVisible(true);
放到构造方法最后一句去

	public File() {

jf = new JFrame();
c = jf.getContentPane();
c.setBounds(0, 0, 600, 560);
c.setLayout(null);
jf.setTitle("文件转置");
jf.setSize(600, 560);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel label1 = new JLabel("原始文件:");
label1.setBounds(0, 5, 150, 20);
jf.add(label1); // 添加"原始文件:"

JLabel label2 = new JLabel("转置后的文件:");
label1.setBounds(300, 5, 120, 20);
c.add(label2); // 添加"转置后的文件:"

JButton button1 = new JButton("输入文本");
button1.addActionListener(new CreateListener());
button1.setBounds(40, 500, 100, 20); // 添加"输入文本"按钮
c.add(button1);

JButton button2 = new JButton("倒置");
button2.addActionListener(new SwitchListener());
button2.setBounds(200, 500, 100, 20);
c.add(button2); // 添加"倒置"按钮

JButton button3 = new JButton("退出系统");
button3.addActionListener(new ExitListener());
button3.setBounds(360, 500, 100, 20);
c.add(button3); // 添加"退出系统"按钮

js1 = new JScrollPane();
js1.setBounds(285, 31, 10, 460);
js2 = new JScrollPane();
js2.setBounds(585, 31, 10, 460); // 设置滚动条

jt1 = new JTextArea(100, 100);
jt1.setBounds(0, 31, 295, 460);
jt1.add(js1);
jt1.setEditable(false);
jt1.setVisible(true);
c.add(jt1); // 添加第一个文本区用于输入源文件,并将滚动条添加到第一个文本区

jt2 = new JTextArea(100, 100);
jt2.setBounds(305, 31, 290, 460);
jt2.setVisible(true);
jt2.setEditable(false);
jt1.add(js2);
c.add(jt2); // 添加第二个文本区用于显示到之后的文本,并将滚动条添加到第二个文本区
jf.setVisible(true);
}

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧