问题一: 我把一个JTextPane装入JScrollPane,然后二者的Opaque(底层不透明)属性都设为false,再把其装入JFrame里,希望获得的效果是JFrame层里描绘的图片能够透过这两个元件显示出来。但实际效果却是不透明。
为什么?
我如何才能做到我希望实现的那种样子?问题二:
我自己写了一个类继承自JTextPane,并实现能装入背景图,发现把它装入JScroll中后,JScroll无效,为什么会出现这种问题?如何操作才能让JScroll有效?(这个类我等下贴在下面供大家研究。问题三:
当我对某个面板使用GribBagLayout作为布局管理器后,把JTextPane加入到里面,JTextPane总是以最小化的形式出现?如果把JTextPane装入JScrollPane再加入面板,同样也是以最小化的形式出现,当我输入文字的时候,它就会随之不断扩大。如何能让它以我设定的固定大小出现,而不会随着我往里面输入文字而变化大小?(假设这个大小是(400,300))附:我继承自JTextPane的类import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
import java.io.*;class ColorText extends JTextPane
{
private ColorText colorText;
private ImageIcon icon;
private Image image;
private static SimpleAttributeSet fontStyle;
public ColorText(String imageName, String description)
{
super();
icon = new ImageIcon(imageName, description);
image=icon.getImage();
setOpaque(false);
setFont(new Font("宋体",Font.PLAIN,14));
fontStyle=new SimpleAttributeSet();
}
public void paintComponent(Graphics g)
{
g.drawImage(image,5,15,this);
super.paintComponent(g);
}
public Dimension getPreferredSize()
{
Insets insets = getInsets();
return new Dimension(
icon.getIconWidth() + insets.left + insets.right,
icon.getIconHeight() + insets.top + insets.bottom);
}
public void append(String s)
{
Document d=getDocument();
try
{
d.insertString(d.getLength(),s,fontStyle);
}
catch(BadLocationException ble){}
}
public SimpleAttributeSet getFontStyle()
{
return fontStyle;
}
public void setFontStyle(SimpleAttributeSet fontStyle)
{
this.fontStyle=fontStyle;
}
public void setFontColor(Color color)
{
StyleConstants.setForeground(fontStyle,color);
}
public void setFontSize(int size)
{
System.out.println(fontStyle.toString());
StyleConstants.setFontSize(fontStyle,size);
System.out.println(fontStyle.toString());
}
public void setFontType(int fstyle)
{
if(fstyle==Font.ITALIC)
StyleConstants.setItalic(fontStyle,true);
if(fstyle==Font.BOLD)
StyleConstants.setBold(fontStyle,true);
if(fstyle==Font.PLAIN)
{
StyleConstants.setItalic(fontStyle,false);
StyleConstants.setBold(fontStyle,false);
}
}
}
为什么?
我如何才能做到我希望实现的那种样子?问题二:
我自己写了一个类继承自JTextPane,并实现能装入背景图,发现把它装入JScroll中后,JScroll无效,为什么会出现这种问题?如何操作才能让JScroll有效?(这个类我等下贴在下面供大家研究。问题三:
当我对某个面板使用GribBagLayout作为布局管理器后,把JTextPane加入到里面,JTextPane总是以最小化的形式出现?如果把JTextPane装入JScrollPane再加入面板,同样也是以最小化的形式出现,当我输入文字的时候,它就会随之不断扩大。如何能让它以我设定的固定大小出现,而不会随着我往里面输入文字而变化大小?(假设这个大小是(400,300))附:我继承自JTextPane的类import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
import java.io.*;class ColorText extends JTextPane
{
private ColorText colorText;
private ImageIcon icon;
private Image image;
private static SimpleAttributeSet fontStyle;
public ColorText(String imageName, String description)
{
super();
icon = new ImageIcon(imageName, description);
image=icon.getImage();
setOpaque(false);
setFont(new Font("宋体",Font.PLAIN,14));
fontStyle=new SimpleAttributeSet();
}
public void paintComponent(Graphics g)
{
g.drawImage(image,5,15,this);
super.paintComponent(g);
}
public Dimension getPreferredSize()
{
Insets insets = getInsets();
return new Dimension(
icon.getIconWidth() + insets.left + insets.right,
icon.getIconHeight() + insets.top + insets.bottom);
}
public void append(String s)
{
Document d=getDocument();
try
{
d.insertString(d.getLength(),s,fontStyle);
}
catch(BadLocationException ble){}
}
public SimpleAttributeSet getFontStyle()
{
return fontStyle;
}
public void setFontStyle(SimpleAttributeSet fontStyle)
{
this.fontStyle=fontStyle;
}
public void setFontColor(Color color)
{
StyleConstants.setForeground(fontStyle,color);
}
public void setFontSize(int size)
{
System.out.println(fontStyle.toString());
StyleConstants.setFontSize(fontStyle,size);
System.out.println(fontStyle.toString());
}
public void setFontType(int fstyle)
{
if(fstyle==Font.ITALIC)
StyleConstants.setItalic(fontStyle,true);
if(fstyle==Font.BOLD)
StyleConstants.setBold(fontStyle,true);
if(fstyle==Font.PLAIN)
{
StyleConstants.setItalic(fontStyle,false);
StyleConstants.setBold(fontStyle,false);
}
}
}
解决方案 »
- readobject 报错
- 如何校验两个文件是否一致?
- 请问如何动态地创建一个对象?
- 请教关于applet画板的一些问题
- 请问我这个程序怎么什么也没显示??
- 求教一个简单的问题
- 请问一下:怎么在eclipse中使用swt?
- 急:Jbuilder 7.0 里如何加入 tomcat3.2 服务器
- 善于jTable如何根据用户的选择显示不同的数据???
- The expression of type List needs unchecked conversion to conform to List<Guest>
- 怎样用JAVA来实现文件的传送?
- 在JAVA中一个接口可以继承多个接口吗?没分了:( 大家帮忙。
除了要 JScrollPane.setOpaque(false); 以外
还要 JScrollPane.getViewport().setOpaque(false);