[英]JLabel and JTextArea not working
我正在制作一个窗口,该窗口下有一个大文本区域和一个小文本区域。 这是我到目前为止所拥有的:
这是我的代码:
JPanel window=new JPanel(){
protected void paintComponent(Graphics g){
super.paintComponent(g);
ImageIcon ii=new ImageIcon("textEffect.png");
Image i=ii.getImage();
g.drawImage(i,0,0,null,this);
}
};
JLabel label=new JLabel("Say: ");
JTextArea dialog=new JTextArea(20,50);
JTextArea input=new JTextArea(1,46);
JScrollPane scroll=new JScrollPane(
dialog,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
);
//main method
public static void main(String[] args){
new Window();
}
//Makes window and starts bot
public Window(){
super("Pollockoraptor");
setSize(600,400);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
dialog.setEditable(false);
dialog.setOpaque(false);
dialog.setBackground(new Color(0, 0, 0, 0));
dialog.setLineWrap(true);
input.addKeyListener(this);
label.setVerticalTextPosition(SwingConstants.BOTTOM);
label.setHorizontalTextPosition(SwingConstants.LEFT);
window.add(scroll);
window.add(label);
window.add(input);
window.setBackground(new Color(97,118,131));
add(window);
setVisible(true);
}'
如何使较大的文本区域部分透明,以便可以看到背景,以及如何将“说:”移到较小的文本区域的前面?
JPanel
默认使用FlowLayout
。 您可能要亲自更改布局管理器,我建议您使用GridBagLayout
东西,但这就是我自己。
有关更多详细信息,请参见在容器中布置组件
为了使JTextArea
透明,您将必须使JScrollPane
及其JViewPort
透明。
Swing仅知道如何绘制完全不透明或完全透明的组件。 您可以通过以下方式创建半透明效果:使组件透明并覆盖其paintComponent
方法,并使用AlphaComposite
或使用alpha
值设置为255
以下的Color
绘画a
例如...
和一般建议...
KeyListener
键绑定 getPreferredSize
,以便在布局时获得更好的结果 setSize
使用JFrame#pack
,这将根据内容的需要来计算窗口大小,同时还要考虑到窗口框架的装饰 如何使较大的文本区域部分透明,以便可以看到背景
在使用透明背景和通用解决方案时,请查看“ 具有透明性的背景”,以解决问题,而无需始终进行自定义绘制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.