gpt4 book ai didi

Java 使用 jbutton 在卡片之间切换

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:41 25 4
gpt4 key购买 nike

我正在使用卡片布局,我想让第一张卡片有一个按钮,当点击它时,它将把它带到卡片 2,卡片 2 有一个按钮,可以将它带回卡片 1。这是我当前的代码,我已经尝试在 actionPerformed 方法中添加一些东西,但我没有成功让它工作。此外,我在 button1.addActionListener(this); 的行中收到关于“this”的语法错误;和 button2.addActionListener(this);我认为这是因为我的 actionPerformed 方法设置不正确。非常感谢任何有关设置按钮的帮助。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Main implements ItemListener {

JPanel cards;

public void addComponentToPane(Container pane) {
//create cards
JPanel card1 = new JPanel();
JPanel card2 = new JPanel();
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
button1.addActionListener(this);
button2.addActionListener(this);
card1.add(button1);
card2.add(button2);

//create panel that contains cards
cards = new JPanel(new CardLayout());
cards.add(card1);
cards.add(card2);
pane.add(cards, BorderLayout.CENTER);
}

public void itemStateChanged(ItemEvent evt) {
CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, (String)evt.getItem());
}

public static void createAndShowGUI() {
//create and setup window
JFrame frame = new JFrame("Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//create and setup content pane
Main main = new Main();
main.addComponentToPane(frame.getContentPane());

//display window
frame.pack();
frame.setVisible(true);
}

public void actionPerformed(ActionEvent ae) {

}

public static void main(String[] args) {
//set look and feel
try {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
//turn off metal's bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);

//schedule job for the event dispatch thread creating and showing GUI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}

最佳答案

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CardTest implements ActionListener {

private JPanel cards;
private JButton button1;
private JButton button2;

public void addComponentToPane(Container pane) {
// create cards
JPanel card1 = new JPanel();
JPanel card2 = new JPanel();
button1 = new JButton("Button 1");
button2 = new JButton("Button 2");
button1.addActionListener(this);
button2.addActionListener(this);
card1.add(button1);
card2.add(button2);

// create panel that contains cards
cards = new JPanel(new CardLayout());
cards.add(card1, "Card 1");
cards.add(card2, "Card 2");
pane.add(cards, BorderLayout.CENTER);
}

public void itemStateChanged(ItemEvent evt) {
CardLayout cl = (CardLayout) (cards.getLayout());
cl.show(cards, (String) evt.getItem());
}

public static void createAndShowGUI() {
// create and setup window
JFrame frame = new JFrame("Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// create and setup content pane
CardTest main = new CardTest();
main.addComponentToPane(frame.getContentPane());

// display window
frame.pack();
frame.setVisible(true);
}

public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == button1) {

CardLayout cl = (CardLayout) (cards.getLayout());
cl.show(cards, "Card 2");

} else if (ae.getSource() == button2) {

CardLayout cl = (CardLayout) (cards.getLayout());
cl.show(cards, "Card 1");
}
}

public static void main(String[] args) {
// set look and feel
try {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
// turn off metal's bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);

// schedule job for the event dispatch thread creating and showing GUI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}

关于Java 使用 jbutton 在卡片之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11488364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com