请直接给出java代码
时间: 2023-07-28 18:10:14 浏览: 48
好的,以下是一个简单的Java代码示例,可以实现您所描述的功能:
```java
import javax.swing.*;
import java.awt.*;
public class StackGUI extends JFrame {
private JPanel contentPane;
private JPanel stackPanel;
private JLabel topLabel;
private int topIndex = -1;
private int[] stack = new int[10];
public StackGUI() {
setTitle("Stack GUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 300, 300);
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
setContentPane(contentPane);
stackPanel = new JPanel();
stackPanel.setLayout(new GridLayout(10, 1));
for (int i = 0; i < 10; i++) {
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
JLabel label = new JLabel(String.valueOf(i));
panel.add(label);
stackPanel.add(panel);
}
contentPane.add(stackPanel, BorderLayout.CENTER);
JPanel topPanel = new JPanel();
topLabel = new JLabel("TOP -->");
topPanel.add(topLabel);
contentPane.add(topPanel, BorderLayout.SOUTH);
JButton pushButton = new JButton("Push");
pushButton.addActionListener(e -> push());
contentPane.add(pushButton, BorderLayout.NORTH);
}
private void push() {
if (topIndex < 9) {
topIndex++;
stack[topIndex] = topIndex + 1;
JPanel panel = (JPanel) stackPanel.getComponent(topIndex);
panel.removeAll();
JLabel label = new JLabel(String.valueOf(stack[topIndex]));
panel.add(label);
topLabel.setText("TOP --> " + stack[topIndex]);
} else {
JOptionPane.showMessageDialog(this, "Stack is full!");
}
}
public static void main(String[] args) {
StackGUI gui = new StackGUI();
gui.setVisible(true);
}
}
```
这段代码创建了一个简单的堆栈GUI,可以在界面中显示堆栈的每个单元的边框并标上序号,并添加了一个指针样式的TOP,以指向当前栈顶元素。当用户点击“Push”按钮时,程序将在堆栈中添加一个新元素,并在界面中更新堆栈元素和TOP指针。这个例子可以帮助您更好地理解如何使用Java和Swing库来创建堆栈GUI。