Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在GUI中按下按钮时生成下一组按时间顺序排列的按钮_Java_Swing_User Interface - Fatal编程技术网

Java在GUI中按下按钮时生成下一组按时间顺序排列的按钮

Java在GUI中按下按钮时生成下一组按时间顺序排列的按钮,java,swing,user-interface,Java,Swing,User Interface,这是我在stackOverflow上的第一篇帖子,我很想知道在这个网站上发布问题的正确礼仪 我的问题在几个简短的陈述中: 我希望能够通过单击按钮来更改JavaGUI中标签的编号。当我点击按钮时,屏幕上的15个标签应该从1-15变为16-31。每点击一次,标签就会生成下15个数字的标签 图像: 目前,当我按下“下一步”按钮时发生的情况如下: 我面临的问题是,在我再次按下“下一步”按钮后,屏幕不会改变,并与16-31之间的标签保持一致 目标:有一个功能性的“上一个”和“下一个”按钮,分别用前1

这是我在stackOverflow上的第一篇帖子,我很想知道在这个网站上发布问题的正确礼仪

我的问题在几个简短的陈述中:
我希望能够通过单击按钮来更改JavaGUI中标签的编号。当我点击按钮时,屏幕上的15个标签应该从1-15变为16-31。每点击一次,标签就会生成下15个数字的标签

图像: 目前,当我按下“下一步”按钮时发生的情况如下:

我面临的问题是,在我再次按下“下一步”按钮后,屏幕不会改变,并与16-31之间的标签保持一致

目标:有一个功能性的“上一个”和“下一个”按钮,分别用前15个或后15个标签有序地刷新GUI

以下是“上一个”和“下一个”按钮的事件处理程序代码:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
}                                        
int updateLabelBy=16;
整数倍因子=1;
int sum=乘数*updateLabelBy;
私有void jButton3ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
//按下此按钮时,JPanel2,3,4,5都将显示下一个解决方案实例
如果(数值>15)
{
//清除通道
jPanel1.removeAll();
jPanel1.updateUI();
jPanel2.removeAll();
jPanel2.updateUI();
jPanel3.removeAll();
jPanel3.updateUI();
jPanel4.removeAll();
jPanel4.updateUI();
jPanel5.removeAll();
jPanel5.updateUI();
//更新标签索引号的步骤
//int multiplied=乘数*updateLabelBy;
for(int i=16;i
这很容易做到。要更改按钮上显示的文本,只需执行以下操作


btn.setText(“新消息”)

我认为它比这要复杂一些。因为'btn.setText(“message”)将所有按钮的标签更改为相同的内容。GUI的屏幕只能容纳15个按钮,如我在上面的GUI屏幕截图中所示。如果所有按钮都有不同的名称,例如btn1、btn2等。您可以执行btn1.setText(“消息”),这不会更改所有按钮。我不是手动创建按钮,而是通过“for”循环添加按钮。OK。我不太清楚怎么做,但您可以尝试
for(int I=1;I<16;I++)
和do
while I=1{//change button}
谢谢您的回复DalekCaan99。
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:

}                                        



int updateLabelBy = 16;
int multiplyingFactor = 1;
int sum = multiplyingFactor * updateLabelBy ;


private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    //When this button is pressed, JPanel2,3,4,5 will all show the next instance of solutions 

    if (NumOfExplanations > 15) 
    {
        //Clearing out JPannels 
        jPanel1.removeAll();
        jPanel1.updateUI();
        jPanel2.removeAll();
        jPanel2.updateUI();
        jPanel3.removeAll();
        jPanel3.updateUI();
        jPanel4.removeAll();
        jPanel4.updateUI();
        jPanel5.removeAll();
        jPanel5.updateUI();



                //To update the label index numbers 

    //int multiplied = multiplyingFactor * updateLabelBy;

     for ( int i = 16; i < NumOfExplanations; i++ )
    {
        JLabel label = new JLabel( "Exp " + i  );
        label.setSize(100,35);
        label.setMaximumSize(new Dimension (140,40));
        label.setMinimumSize(new Dimension (100,30));
        label.setFont(new Font("Serif", Font.BOLD, 15));

        jPanel2.setLayout(new BoxLayout(jPanel2, BoxLayout.Y_AXIS));
        jPanel2.setBorder(BorderFactory.createEmptyBorder(10, 10, 15, 0));
        label.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jPanel2.add(label);


    }

    }
    else 
        {
        final JFrame parent = new JFrame();
        JButton button = new JButton();

        button.setText("This document only contains " + NumOfExplanations + " explanations" );
        parent.add(button);
        parent.pack();
        parent.setVisible(true);
        parent.setSize(400,200);
        parent.setLocationRelativeTo(null);

    }






}