私は、アプリケーションがボタン上のいくつかの画像を含むことができる必要があるプロジェクトに取り組んでいます。各ボタンの長さと幅は同じでなければなりません。アプリケーションには約10〜20個のボタンが必要です。そこで、JScrollPaneを使ってすべてのJButtonを水平に整理することにしました。最初に、JPanelにこれらのJButtonをすべて追加しました。このJPanelは、LayoutとGridLayoutを1列と10行に設定しました。その後、JPanelをJScrollPaneに追加します。 その結果、すべてのボタンのサイズが同じになります。しかし問題は、JScrollPaneのJScrollBarが移動できなかったことです(JScrollPaneまたはGridLayoutの長さを超えるボタンが不十分で、各ボタンのサイズが常に変更されている可能性があります)。それで、JButtonを最大20個追加しようとしました(写真2)。したがって、JScrollPaneのJScrollBarが有効になり、移動できました。しかし残念なことに、JScrollPaneのすべてのJButtonは、ボタンが追加されるたびに短く短くなりました。JButtonのサイズを維持する方法は、JButtonをJScrollPaneにますます追加すると同じままですか?
これは、GridLayoutのために、私は各コンポーネントのサイズを自動的に変更するJPanelに設定しているためだと思います。そこで、私はFlowLayoutを使用しようとしましたが、JButtonが小さすぎてサイズを変更できないため、期待通りには満足できませんでした(pic3)。もっと多くのボタンが追加されるたびに、またはサイズを設定できるたびに、各ボタンのサイズを変更せずにそのまま保持したかっただけです。
これまでに誰も経験したことがありませんでした。
public class Testing
{
public Testing()
{
JFrame frm = new JFrame();
JPanel panel = new JPanel();
JScrollPane sc = new JScrollPane();
// init frame
frm.setSize(1366, 768);
frm.setLayout(new GridLayout(5, 1, 10, 10));
// init panel
panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
// set some JScrollpane properties
sc.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
sc.setViewportView(panel);
// add few button into panel
for (int i = 0; i < 20; i++)
{
panel.add(new JButton("Button " + i));
}
frm.add(sc);
frm.setVisible(true);
frm.setLocationRelativeTo(null);
}
public static void main(String[] ar)
{
new Testing();
}
}