Java - 在JButton和JTextArea上绘制一个圆

时间:2015-04-14 03:10:38

标签: java swing jbutton jtextarea

所以我试图在按钮和textarea上绘制一种椭圆形。是的,我有理由不能使用面板或框架。

因此按钮和textarea已经有文本,需要保留为按钮和textarea,因为程序的原因。

到目前为止,我只有一个按钮来显示这个圆圈,但没有其他按钮显示圆圈。 textareas根本没有显示任何圆圈。

我的代码到目前为止按钮:

for (int i = 0; i < (label.length) / 2; i++) {
        butt = new JButton(label[i]); // label contains the text on button
        butt.setPreferredSize(new Dimension(83, 100));
        butt.add(smallPit); //smallpit is the circle graphics
        game.add(butt); // game is a panel
        // butt.setLayout(null);
    }
    for (int i = 6; i < label.length; i++) {
        butt = new JButton(label[i]);
        butt.setPreferredSize(new Dimension(83, 100));
        butt.add(smallPit);
        game.add(butt);
    }

textarea代码

score2.setBounds(0, 50, 100, 210);
score1.setBounds(700, 50, 100, 210);
score2.add(scorePit);
score1.add(scorePit);

到目前为止的结果:

enter image description here

1 个答案:

答案 0 :(得分:2)

我的猜测是butt.add(smallPit);导致了您的问题。

我的猜测是smallPit延伸自JComponent(从JComponent扩展的东西),问题是一个组件只能驻留在一个容器中,所以每次你在将butt.add(smallPit);添加到新容器之前,已将其从之前的容器中移除smallPit。{/ p>

相反,创建smallPit的实例(或者它是什么)并将其添加到需要它的每个按钮。

避免使用null布局,像素完美布局是现代ui设计中的一种幻觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正

您还应该查看Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?