界面一个小问题,请帮忙,参与有分

HitXU 2005-03-21 04:10:14
我想设计一个界面,左边放一些控件,右边是一个文本区域,想让这个文本区域可以有横纵滚动条。
我用awt包在jb里很简单就可以实现,在左边放一个panel,右边放一个TextArea就可以。
但是用swing包却不行,swing包中有JScrollPane,如果我只放一个JScrollPane面板,然后在这个面板上放text控件可以出现滚动条,可是如果我在左边先放一个panel就不行了。

大侠帮忙,最好给个例子。谢谢
...全文
37 点赞 收藏 4
写回复
4 条回复
HitXU 2005年03月23日
多谢 cissy7800了,多亏你忍无可忍了,不然我不知道还要忍多久
回复 点赞
cissy7800 2005年03月22日
package mywork;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/**
*主要练习布局和基本的事件
*/

public class MyHomeWork extends JFrame implements ActionListener,ListSelectionListener,AdjustmentListener,ItemListener
{
MyHomeWork kk;

JMenuBar jmb=new JMenuBar();
JMenu fill=new JMenu("文件");
JMenu therfill=new JMenu("保存");

String[] ss={"黑体","粗体","斜体"};
JComboBox box=new JComboBox(ss);

JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
JPanel p6=new JPanel();
JPanel p7=new JPanel();
JPanel p8=new JPanel();
JPanel p9=new JPanel();
JPanel p10=new JPanel();
JPanel p11=new JPanel();

MyPanel p5=new MyPanel();

JButton b1=new JButton("显示字体");
JList list=new JList();
JScrollPane jsp=new JScrollPane(list);//给列表框加上滚动条

JLabel jb1=new JLabel("请在文本框中输入文字:");
JTextField t1=new JTextField(15);
JButton b2=new JButton("转换");


Scrollbar js=new Scrollbar(Scrollbar.HORIZONTAL,10,10,10,110);//方向,初位置,滑块的尺寸,最小值,最大值
Scrollbar js2=new Scrollbar(Scrollbar.VERTICAL,0,10,30,Integer.MAX_VALUE);

JLabel ser=new JLabel("红色");
JLabel seg=new JLabel("绿色");
JLabel seb=new JLabel("蓝色");
Scrollbar selectred=new Scrollbar(Scrollbar.HORIZONTAL,0,0,0,255);//调整字体颜色的滚动条
Scrollbar selectgreen=new Scrollbar(Scrollbar.HORIZONTAL,0,0,0,255);
Scrollbar selectblue=new Scrollbar(Scrollbar.HORIZONTAL,0,0,0,255);


//Color c=Color.RED;

Container AA;
JFrame fm=new JFrame();
int y,j;

MyHomeWork(String s,int x1,int x2,int x3,int x4)
{
super(s);
//加菜单
fill.add("打开");
fill.add("关闭");
fill.add(therfill);
therfill.add("保存");
therfill.add("另存为...");
fill.addSeparator();
fill.add("退出");
jmb.add(fill);
this.setJMenuBar(jmb);

kk=this;
AA=this.getContentPane();
AA.setLayout(new BorderLayout());
//加监听
list.addListSelectionListener(this);//给列表框增加监听
b1.addActionListener(this);//为"显示字体按钮"增加监听
b2.addActionListener(this);//按钮b2增加监听

js.addAdjustmentListener(this);//横向滚动条
// js2.addAdjustmentListener(this);//纵向滚动条

box.addItemListener(this);//下拉列表框
selectred.addAdjustmentListener(this);
selectgreen.addAdjustmentListener(this);
selectblue.addAdjustmentListener(this);
//b2.setMnemonic(KeyEvent.VK_1);

b2.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
if(e.getKeyCode()==10)
{
p5.repaint();
}
}
});


t1.addKeyListener(new KeyAdapter()//文本框的回车事件
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==10)
{
p5.repaint();
}
}
});


//面板一
p1.setLayout(new BorderLayout(3,1));
p1.add(b1,BorderLayout.NORTH);
p1.add(jsp,BorderLayout.CENTER);

p6.setLayout(new BorderLayout(3,1));
p6.add(selectred,BorderLayout.NORTH);
p6.add(selectgreen,BorderLayout.CENTER);
p6.add(selectblue,BorderLayout.SOUTH);
p1.add(p6,BorderLayout.SOUTH);

AA.add(p1,BorderLayout.WEST);
//面板二
p2.setLayout(new BorderLayout(3,1));
p3.setLayout(new FlowLayout(FlowLayout.LEFT));
p3.add(jb1);
p3.add(t1);
p3.add(box);
p3.add(b2);

p2.add(p3,BorderLayout.NORTH);
p2.add(js2,BorderLayout.EAST);
p2.add(p5,BorderLayout.CENTER);
p2.add(js,BorderLayout.SOUTH);
AA.add(p2,BorderLayout.CENTER);

setBounds(x1,x2,x3,x4);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
setVisible(true);

}

public void valueChanged(ListSelectionEvent e)//列表框事件
{
p5.repaint();

}

public void actionPerformed(ActionEvent e)//显示列表框中的字体
{
if(e.getActionCommand().equals("显示字体"))
{
GraphicsEnvironment env=GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontnames=env.getAvailableFontFamilyNames();
for(int i=0;i<fontnames.length;i++)
{
list.setListData(fontnames);

}

}
if(e.getActionCommand().equals("转换"))//按钮事件
{
p5.repaint();
}

}

public void itemStateChanged(ItemEvent e)
{
p5.repaint();

}


public void adjustmentValueChanged(AdjustmentEvent e)//滚动条事件
{
if(e.getSource()==js)//调字体的大小
{
p5.repaint();

}

if(e.getAdjustable().equals(js2))//调窗体的背景颜色
{


System.out.println (js2.getValue());
p5.setBackground(new Color(j));
p2.setForeground(new Color(j));

}
if(e.getSource()==selectred)
{
p5.repaint();

}
if(e.getSource()==selectgreen)
{
p5.repaint();

}
if(e.getSource()==selectblue)
{
p5.repaint();

}


}
class MyPanel extends JPanel
{
public void paintComponent(Graphics g)
{
int a,b,c;
a=selectred.getValue();
b=selectgreen.getValue();
c=selectblue.getValue();

super.paintComponent(g);//清除背景
g.setColor(new Color(a,b,c));
g.setFont(new Font((String)(kk.list.getSelectedValue()),kk.box.getSelectedIndex(),kk.js.getValue()));
g.drawString(kk.t1.getText(),10,100);
}
}
public static void main(String[] args)
{
new MyHomeWork("测试",45,50,800,600);

}

}
回复 点赞
midlet 2005年03月21日
describe your problem clearly.whats the result?
回复 点赞
xhjf777 2005年03月21日
在swing下,用窗口分割控件可以解决
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告