当前位置: 首页 > 知识库问答 >
问题:

选中JToggleButton后,禁用其标准重新绘制

孔才
2023-03-14

我希望我的JToggleButton在被选中时不要重新绘制。我用一对字(“检查/下一步”)表示状态改变。标准行为是蓝色照明,但我想禁用它。

共有2个答案

微生自怡
2023-03-14

请参阅:AbstractButton。setContentAreaFilled(false)

但请注意,用户通常更喜欢遵循“最少意外路径”的GUI元素。这种类型的渲染可以更好地描述为在路径旁边的灌木丛中突然发生碰撞。

孔弘盛
2023-03-14

也许您可以在图像图标上显示这些文字。例如:

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JToggleButton;

public class ToggleFun {
   private static final Color BACKGROUND_COLOR = new Color(200, 200, 255);

   public static void main(String[] args) {
      int biWidth = 60;
      int biHeight = 30;
      BufferedImage checkImg = new BufferedImage(biWidth, biHeight, BufferedImage.TYPE_INT_RGB);
      BufferedImage nextImg = new BufferedImage(biWidth, biHeight, BufferedImage.TYPE_INT_RGB);

      Graphics2D g2 = checkImg.createGraphics();
      g2.setColor(BACKGROUND_COLOR);
      g2.fillRect(0, 0, biWidth, biHeight);
      g2.setColor(Color.black);
      g2.drawString("Check", 10, 20);
      g2.dispose();

      g2 = nextImg.createGraphics();
      g2.setColor(BACKGROUND_COLOR);
      g2.fillRect(0, 0, biWidth, biHeight);
      g2.setColor(Color.black);
      g2.drawString("Next", 15, 20);
      g2.dispose();

      ImageIcon checkIcon = new ImageIcon(checkImg);
      ImageIcon nextIcon = new ImageIcon(nextImg);

      JToggleButton toggleBtn = new JToggleButton(checkIcon);
      toggleBtn.setSelectedIcon(nextIcon);
      toggleBtn.setContentAreaFilled(false);
      toggleBtn.setBorder(BorderFactory.createLineBorder(Color.black));

      JPanel panel = new JPanel();
      panel.add(toggleBtn);
      JOptionPane.showMessageDialog(null, panel);

   }
}
 类似资料:
  • 高级路径 今天开始,我们就要征战路径最后也是最难的部分了——高级路径。之前我们学习的都是绘制线条(基本路径),接下来的四节课我们详细看看绘制曲线(高级路径)的有关方法。 剧透一下,主要有四个方法: 标准圆弧:arc() 复杂圆弧:arcTo() 二次贝塞尔曲线:quadraticCurveTo() 三次贝塞尔曲线:bezierCurveTo() 在开始之前,我们优化一下我们的作图环境。灵感来自于上

  • 问题内容: 我有一个封闭的源程序,可以将输出打印到标准输出。我需要解析输出。因此,我使用dup2将输出重定向到FIFO(可以在分叉并执行二进制文件的父进程中从中读取),然后执行该程序。问题是文件中的fprintf调用被缓冲了,因为它现在正在写入文件。 我尝试在调用exec之前在sdout上使用_IONBF调用setvbuf。但是问题仍然存在。 为什么setvbuf对我的情况没有帮助? 我如何强制输

  • 我有一个将初始背景颜色设置为红色的按钮。我有一个在红色和深红色之间翻转的动作程序。基本上,如果选择按钮,它是红色的。没有选中,是暗红色。 代码运行,但是每当选择切换按钮时,它都是白色的。所以我在深红色和白色之间切换。 我所做的:我做了很多代码实验,但毫无进展。我做了很多网络搜索,但找不出一个有效的例子。 我正在使用Java11。我需要在代码中更改什么才能获得我想要的行为?

  • 问题内容: 我目前正在php 5.4上运行一个站点,在此之前我在5.3.8上运行了我的站点。不幸的是,php 5.4结合了和,这意味着我之前的设置现在无法正常工作。我以前的值是我应该一次启用一个值吗? 我有太多错误,文件包含太多代码供我修复。 问题答案: 正如评论者所说, 最好的 选择是修复错误,但时间或知识有限,这并非总是可能的。在您的php.ini中更改 至 如果您无权访问php.ini,则可

  • 问题内容: 当图表第一次使用初始默认Ajax答复加载时,它可以正常工作。如果我添加console.log(chart_data),我会看到默认数据,然后在提交后我会看到新数据。唯一的问题是图表不会再次绘制。我知道drawChart函数不会第二次运行,我只是不知道为什么。我假设是的话,图表将重绘。抱歉,答案很明显。我对jQuery / Ajax非常陌生。 任何帮助,将不胜感激。谢谢! 问题答案: 您

  • 我面临着一个问题,与CollapsePanel。 当事件被触发时,我需要更改它的标题。到目前为止,我覆盖了BorderLayout的createCollapsePanel,并向我需要的事件添加了一个侦听器: 上面的代码执行得很好,但是结果CollapsePanel永远不会获得新标题。 我是不是遗漏了什么?谢谢