我有一个按钮数组,可在图像查询后显示图像。现在我正在尝试在每个按钮下添加一个复选框,以便用户可以检查这是否是相关图像。我将有一个Jpanel阵列,其中每个Jpanel由一个按钮和复选框组成,但我不知道如何在我的代码中包含所有组件。这是我到目前为止:
resultPanel = new JPanel[10];
resultPanel[10].add(relevantFB);
resultPanel[10].add(button);
for (int i = 1; i < 101; i++) {
button[i] = new JButton(newIcon);
relevantFB[i] = new JCheckBox();
relevantFB[i].setText("Relevant Image" + i);
panelBottom1.add(button[i]);
button[i].addActionListener(new IconButtonHandler(i, newIcon));
relevantFB[i].addActionListener(new IconCheckboxHandler(i, newIcon));
buttonOrder[i] = i;
checkboxOrder[i]=i;
}
答案 0 :(得分:1)
为此,您不能为每对创建JPanel(复选框+按钮)。您必须创建一个Panel,并在布局管理器的帮助下放置组件。 In适用于 LayoutManager 。
您可以将GridBagLayout用于此目的。在下一个例子中,我在按钮下创建了5个按钮和5个复选框:
public class Example extends JFrame {
public Example() {
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5, 5, 5, 5);
JButton btns[] = new JButton[5];
JCheckBox chboxes[] = new JCheckBox[5];
c.gridx = 0;
for(int i = 0;i<btns.length;i++){
btns[i] = new JButton(""+i);
getContentPane().add(btns[i],c);
c.gridx++;
}
c.gridy = 1;
c.gridx = 0;
for(int i = 0;i<chboxes.length;i++){
chboxes[i] = new JCheckBox(""+i);
getContentPane().add(chboxes[i],c);
c.gridx++;
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String...strings ){
Example e = new Example();
}
}
答案 1 :(得分:0)
将JPanel与GridBagLayout一起使用。将第一行的按钮放在下方的复选框中。
- 编辑 -
这是一些代码。假设您在数组icon
中有n个图标。与你不同,我假设图标的编号为0。
JPanel resultPanel = new JPanel() ;
GridBagLayout gbl = new GridBagLayout() ;
resultPanel.setLayout( gbl );
GridBagConstraints constraints = new GridBagConstraints() ;
JButton[] button = new JButton[n] ; ;
for( int i = 0 ; i < n ; ++i ) {
button[i] = new JButton( new ImageIcon( "path"+(i+1)+".jpg" ) ); }
button[i].addActionListener(new IconButtonHandler(i+1, icon[i]));
constraints.gridx = i ;
constraints.gridy = 0 ;
resultPanel.Add( button[i], constraints ) ; }
JCheckBox[] relevantFB = new JCheckBox[n] ; ;
for( int i = 0 ; i < n ; ++i ) {
relevantFB[i] = new JCheckBox();
relevantFB[i].setText("Relevant Image" + (i+1));
relevantFB[i].addActionListener(new IconCheckboxHandler(i+1, icon[i]));
constraints.gridx = i ;
constraints.gridy = 1 ;
resultPanel.add( relevantFB[i], constraints ) ; }