通常情况下,当您使用setEdable(false)
或setEnable(false)
时,JTextField的背景/前景色会变成“灰色”。但是,如果之前使用setbackground(Color)
设置了背景色(例如White
),那么调用setEnable
或setEdable
将不再影响背景色。相反,它会被先前设置的颜色覆盖。
在WinForms(.NET)中,这可以通过将背景颜色“重置”为非覆盖默认值来解决,即color。空的
。这将导致文本框恢复标准行为。然而,我还没有为JTextField找到类似的“默认值”。当JTextField被禁用或设置为只读时,如何将其还原为使用默认颜色并自动切换颜色?前景色也有类似的问题。
如何还原JTextField以使用默认颜色
textField.setBackground( null );
在禁用或设置为只读时自动切换颜色?
使用PropertyChangeListener:
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.text.*;
public class SSCCE extends JPanel implements PropertyChangeListener
{
public SSCCE()
{
JTextField textField = new JTextField("Some Text");
// Uncomment and run again to see the difference
//textField.addPropertyChangeListener( this );
textField.setBackground(Color.RED);
textField.setEditable(false);
add(textField);
}
public void propertyChange(PropertyChangeEvent e)
{
System.out.println(e.getPropertyName());
JTextField textField = (JTextField)e.getSource();
if ("editable".equals(e.getPropertyName()))
textField.setBackground( null );
}
private static void createAndShowUI()
{
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( new SSCCE() );
frame.pack();
frame.setLocationByPlatform( true );
frame.setVisible( true );
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
您需要将字段的背景颜色重置为其默认值。
默认UI委托正在查找UIResources
,以确定要用于给定字段的正确着色(基于已安装的外观)。
可以使用以下方法重置背景色:
JTextField#setBackground(UIManager.getColor(“TextField.background”))
或者,你可以为你的定制背景构建一个定制的UIResource
。
查看ColorUIResource
了解更多详细信息。
问题内容: 我对背景色有疑问。如何在启用的文本字段中进行更改(编辑时)?仅适用于禁用的文本字段。可以更改窗口中所有文本字段的背景,但我只想对其中一个进行更改。 问题答案: 好的,这是我需要的:
我需要帮助的java swing为GUI。我已经包含了“frame.getContentPane().setbackground(color.cyan);”到代码,但框架的背景颜色不变?谢谢你。
我试图在基于swing的GUI中更改的背景。我已将该表添加到中。但是,表格中没有单元格的区域不会改变颜色。我尝试更改滚动窗格的背景色和前景色。然而,这也无济于事。我需要编辑JTable的哪个组件来更改白色背景。下面是我代码的一部分。 JTable的代码
我添加了一个表,但问题是,面板没有显示其背景色。我试过设置滚动窗格的背景色等,但它不起作用。框架有一个按钮“验证”,单击该按钮时,在其下方显示一个表。在单击之前,表格将显示的部分为纯灰色。我希望整个部分是象牙背景。请帮我诊断这个问题。
1. 前言 颜色可以使普通文字表达出更深刻的含义,比如红色用于醒目与警示、绿色用于表达良好与正常等。 Markdown 使普通文本具有格式,但它的原生语法并不支持修改前景色和背景色。为了实现丰富文本颜色的需求,我们需要通过增加 HTML 标签实现此类效果。 环境说明: 考虑到 Markdown 工具之间的不兼容,有的内容直接从页面复制粘贴到本地不会正常显示,大家学习时自己动手写是肯定没问题的。本节
我制作了一个JTextField,我希望它的背景是红色的,当它没有字符时,一旦一个字符被写入,就会自动变为绿色。 我试过这个密码 但它不会自动更新它。 谢谢