所以我试图在按钮和文本区域上绘制某种椭圆形。是的,我不能只使用面板或框架是有原因的。

因此,按钮和文本区域上已经有文本,并且出于程序原因,需要保留为按钮和文本区域。

到目前为止,我只有一个按钮带有该圆圈,但是其他按钮都没有与圆圈一起显示。而且文本区域根本没有显示任何圆圈。

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

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);
    }


文本区域代码

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


到目前为止的结果:

最佳答案

我的猜测是此butt.add(smallPit);引起了您的问题。

我的猜测是smallPit是从JComponent扩展而来的(从JComponent扩展而来),问题是组件只能驻留在单个容器中,因此每次调用butt.add(smallPit);时,smallPit是从以前的容器中删除,然后再添加到新容器中。

而是创建smallPit的实例(或任何实例)并将其添加到需要它的每个按钮中。

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

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

07-24 18:52