我正在Java Swing中编写一个简单的绘图程序,并且我遇到了创建颜色按钮网格的问题。我是通过在窗口顶部创建一个JPanel来实现的。 this is what it looks like right now
我正在以这种方式添加按钮:
for (String name : colors.keySet()) {
ColorAction action = new ColorAction(name, colors.get(name));
// above is my class that handles action of clicking button
BufferedImage image = loadButtonImage(name);
JButton button = new JButton (new ImageIcon(image));
button.addActionListener(action);
button.setContentAreaFilled(false);
add(button);
}
而不是我希望它看起来像这些正方形的网格彼此靠近并且每个正方形将是一个颜色按钮。现在,当我点击颜色方块附近的某个地方时,我实际上是在点击一个按钮,它看起来很糟糕。 我正在使用GridLayout,我知道它默认扩展所有按钮以覆盖整个面板,这会导致问题。
除了使用GridBagLayout的复杂代码之外,还有一种简单的方法来实现我的目标吗?
答案 0 :(得分:0)
与@Berger一样,请使用带有setBackground的JLabel。为了使方块紧密包装,在JLabel的调用<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container-fluid">
<div id="row1" class="row text-center">
<!--- Position X--->
<div class="col-xs-5 col-xs-offset-1">
<div class="row">
<div class="col-xs-2">
<button id="PositionXdec" class="btn btn-default">❮</button>
</div>
<div class="col-xs-offset-1 col-xs-7">
<p class="text-center textLabel" id="positionX">X</p>
</div>
<div class="col-xs-2">
<button id="PositionXinc" class="btn btn-default">❯</button>
</div>
</div>
</div>
<!--- Rotation X --->
<div class="col-xs-5">
<div class="row">
<div class="col-xs-2">
<button id="RotationXdec" class="btn btn-default">❮</button>
</div>
<div class="col-xs-offset-1 col-xs-7">
<p class="text-center textLabel" id="RotationX">RX</p>
</div>
<div class="col-xs-2">
<button id="RotationXinc" class="btn btn-default text-left">❯</button>
</div>
</div>
</div>
</div>
</div>
(x =所需的大小,以像素为单位)上,并在添加所有标签后调用容器上的pack()。