- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 JFrame
中得到了 3 个 JPanel
。两个用于 JButton
,另一个用于绘图 Canvas 。我为每个 JButton
生成一个随机颜色,在 JPanel
中间画一个椭圆,每次点击 JButton
时,我都会更改椭圆的颜色。问题是颜色没有改变。
CirclePanel.java:
public class CirclePanel extends JPanel
{
private static final long serialVersionUID = 1L;
private Color color;
public Color getColor()
{
return this.color;
}
public void setColor(Color color)
{
this.color = color;
repaint();
}
public CirclePanel()
{
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
final int OVAL_WIDTH = this.getWidth() / 2;
final int OVAL_HEIGHT = this.getHeight() / 2;
final int xPosition = OVAL_WIDTH / 2;
final int yPosition = OVAL_HEIGHT / 2;
g.setColor(this.color);
g.fillOval(xPosition,yPosition,OVAL_WIDTH,OVAL_WIDTH);
}
}
RightPanel.java 和 LeftPanel.java:
public class RightPanel extends JPanel implements ActionListener
{
private static final long serialVersionUID = 1L;
private static final int BUTTONS = 6;
private CirclePanel circlePanel;
public RightPanel(CirclePanel circlePanel)
{
this.circlePanel = circlePanel;
this.setLayout(new GridLayout(BUTTONS,0));
// Adding buttons to the layout
for (int i = 0;i < RightPanel.BUTTONS;i++)
{
JButton button = new JButton();
button.setBackground(generateColor());
button.addActionListener(this);
this.add(button);
}
this.setVisible(true);
}
public Color generateColor()
{
Random random = new Random();
// 255 - maximum value. 0 - minimum value
int randomNumber1 = random.nextInt((255 - 0) + 1) + 0;
int randomNumber2 = random.nextInt((255 - 0) + 1) + 0;
int randomNumber3 = random.nextInt((255 - 0) + 1) + 0;
Color color = new Color(randomNumber1,randomNumber2,randomNumber3);
return color;
}
@Override
public void actionPerformed(ActionEvent e)
{
Color color = ((JButton)e.getSource()).getBackground();
this.circlePanel.setColor(color);
}
}
public class LeftPanel extends JPanel implements ActionListener
{
private static final long serialVersionUID = 1L;
private static final int BUTTONS = 6;
private CirclePanel circlePanel;
public LeftPanel(CirclePanel circlePanel)
{
this.circlePanel = circlePanel;
this.setLayout(new GridLayout(BUTTONS,0));
// Adding buttons to the layout
for (int i = 0;i < LeftPanel.BUTTONS;i++)
{
JButton button = new JButton();
button.setBackground(generateColor());
button.addActionListener(this);
this.add(button);
}
this.setVisible(true);
}
public Color generateColor()
{
Random random = new Random();
// 255 - maximum value. 0 - minimum value
int randomNumber1 = random.nextInt((255 - 0) + 1) + 0;
int randomNumber2 = random.nextInt((255 - 0) + 1) + 0;
int randomNumber3 = random.nextInt((255 - 0) + 1) + 0;
Color color = new Color(randomNumber1,randomNumber2,randomNumber3);
return color;
}
@Override
public void actionPerformed(ActionEvent e)
{
Color color = ((JButton)e.getSource()).getBackground();
this.circlePanel.setColor(color);
}
}
MyFrame.java:
public class MyFrame extends JFrame
{
private static final long serialVersionUID = 1L;
private CirclePanel circlePanel;
public MyFrame()
{
super("paintComponent");
this.circlePanel = new CirclePanel();
this.setLayout(new BorderLayout());
this.setSize(400,400);
this.setResizable(false);
this.add(new LeftPanel(this.circlePanel),BorderLayout.WEST);
this.add(new RightPanel(this.circlePanel),BorderLayout.EAST);
this.add(new CirclePanel(),BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args)
{
new MyFrame();
}
}
我检查了程序是否访问了每个 actionPerformed()
方法,它确实访问了。
那么它有什么问题呢?
最佳答案
您显示的 CirclePanel
不是您传递给左/右面板的那个,请参阅:
this.add(new LeftPanel(this.circlePanel),BorderLayout.WEST);
this.add(new RightPanel(this.circlePanel),BorderLayout.EAST);
this.add(new CirclePanel(),BorderLayout.CENTER);
你可能想做:
this.add(new LeftPanel(this.circlePanel),BorderLayout.WEST);
this.add(new RightPanel(this.circlePanel),BorderLayout.EAST);
this.add(this.circlePanel,BorderLayout.CENTER);
关于java - 单击 JButton 时椭圆形不改变颜色 - Java Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775253/
我希望通过具有可以具有不同 x 和 y 值的 vec2 半径将我当前的圆形光变成椭圆形。有没有什么方法可以根据我当前在片段着色器中的代码执行此操作? uniform struct Light { ve
我正在尝试在显示的图像中实现形状。我不知道该怎么做。我尝试的最后一件事是: Container( height: 175, deco
刚开始摆弄 GUI。我希望这个程序绘制矩形/圆形(取决于用户单击的位置),并继续在前一个形状内绘制相同的形状,直到达到用户在文本字段中输入的数量。当我运行它时,它似乎永远无法进入paintCompon
我需要在Python程序中计算两个椭圆相交的数量。我知道在shaply如果两个对象相交,有一个函数返回 true。就像这样: from shapely.geometry import Polygon
不幸的是,我无法为 EditText 作品制作椭圆大小。当文本太长时,甚至可以在文本末尾放置三个点吗?它适用于 TextiView 但不适用于 EditText。有什么想法吗? android:id
谁能帮我从div中剪出这样的一个? 找到了可能的解决方案,但不了解 SVG。也许有人可以帮助我。 HTML: CSS: svg { position: relative; top:
有没有办法省略 NSTextField 的文本内容,而不是截断? 所以代替: The quick brown fox jumped over 它会说: The quick brown fox jump
我有一个线性布局 View ,我已将其背景设置为椭圆形纯色。到目前为止,我的背景是圆圈。现在我想实现相同的效果,即使用可绘制的形状来获得具有 2 种颜色的圆圈。请见附件。 最佳答案 关
我有一个指向 CursorAdapter 的微调器。我用一个特定的 View 设置这个适配器。我想修复微调器的宽度,我尝试了很多东西都没有成功: layout_width="100dp"//强制 KO
我正在尝试使用@ValidateWithMethod 来验证属性。我有两个非常不同的自定义验证。我想将它们放在不同的方法中,以便我可以获得不同的消息。但是,放置两个单独的 @ValidateWithM
我正在为一个学校项目创建一个程序,用户可以使用控制以下尺寸和颜色的按钮创建一个几何形状(应该看起来像一匹马):一个椭圆形、一个圆形、两个矩形和一个字符串(作为图的标题)。为了保存该图,我想要一个包含所
我有一个 UICollectionView,可以显示圆形、椭圆形、矩形等形状。因此,当我单击 Cell 时,我需要在 UIView 上绘制相同的形状,然后我需要移动并调整通过单击 Cell 绘制的 V
上图是我正在尝试创建的,但在处理椭圆形时遇到了一些困难。解释: 菜单栏是一个带有轻微线性渐变(深灰色到透明浅灰色)的 div 公司 Logo 图像具有透明背景,位于菜单栏的“顶部” 椭圆形切口需要与
我是 Android Studio 的新手,目前我正在尝试以编程方式创建随机颜色、笔划宽度和大小的椭圆形(不是实心,只是笔划): long randomSeedm = System.c
开始之前的相关信息:我已经搜索了 stackoverflow,并发现了类似的标题问题,但我不认为它们是我的重复项,因为它们有一个关键的区别,它们似乎有包含引用的对象给自己,造成圈子。我没有那个。 {
我是 OpenCV 的新手,需要了解 OpenCV 检测不同形状(圆形、正方形、矩形、三角形、椭圆形)的 iPhone 摄像头图像的方法。 所以,有人可以指导我正确的方向(引用/文章/任何东西),哪些
我正在尝试在java中编写一个20个板堆栈,使用按键功能堆叠一个新板,并使用鼠标单击功能使各个板一一消失到0。我不明白为什么我的函数不会'他们不会按照我的命令去做工作,请帮忙。 // Declare
我是一名优秀的程序员,十分优秀!