《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(11) 调试器的使用(IDEA环境)
原创
©著作权归作者所有:来自51CTO博客作者钰娘娘ynn的原创作品,请联系作者获取转载授权,否则将追究法律责任
11.7 使用调试器
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BuggyButtonTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
BuggyButtonFrame frame = new BuggyButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class BuggyButtonFrame extends JFrame {
private static final int W = 300;
private static final int H = 200;
public BuggyButtonFrame(){
setTitle("BuggyButtonTest");
setSize(W,H);
BuggyButtonPanel panel = new BuggyButtonPanel();
add(panel);
}
}
class BuggyButtonPanel extends JPanel{
public BuggyButtonPanel(){
ActionListener listener = new ButtonListener();
String [] colors = new String[]{"Yellow","Blue","Red"};
for(int i = 0; i < colors.length; i++){
JButton b = new JButton(colors[i]);
add(b);
b.addActionListener(listener);
}
}
private class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String arg = e.getActionCommand();
String [] colors = new String[]{"yellow","blue","red"};
Color[] colorObjs = new Color[]{Color.YELLOW,Color.BLUE,Color.RED};
for(int i = 0;i < colors.length; i++){
if(arg.equals(colors[i])){
setBackground(colorObjs[i]);
}
}
}
}
}
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
🍓 断点:希望在某一句执行前查看的位置,点击行号左侧,出现红色小圆圈即可(需要在执行前或执行到这一句前加断点)
🍓 IDEA 调试方式1:右键+DEBUG 按钮
🍓 IDEA 调试方式2:点击 main 左侧小图标 + DEBUG 按钮
比如点击这个位置
🍓 查看参数方式 1:下方控制台 Debug->Debugger->右下角查看
🍓 查看参数方式 2:鼠标光标移动到变量上查看
此处发现起的名称不同,把公共名称改为在外侧定义数组,防止重复书写字符串出错
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BuggyButtonTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
BuggyButtonFrame frame = new BuggyButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class BuggyButtonFrame extends JFrame {
private static final int W = 300;
private static final int H = 200;
public BuggyButtonFrame(){
setTitle("BuggyButtonTest");
setSize(W,H);
BuggyButtonPanel panel = new BuggyButtonPanel();
add(panel);
}
}
class BuggyButtonPanel extends JPanel{
public BuggyButtonPanel(){
ActionListener listener = new ButtonListener();
for(int i = 0; i < colors.length; i++){
JButton b = new JButton(colors[i]);
add(b);
b.addActionListener(listener);
}
}
final String [] colors = new String[]{"Yellow","Blue","Red"};
private class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String arg = e.getActionCommand();
final Color[] colorObjs = new Color[]{Color.YELLOW,Color.BLUE,Color.RED};
for(int i = 0;i < colors.length; i++){
if(arg.equals(colors[i])){
setBackground(colorObjs[i]);
}
}
}
}
}
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
🍉 小贴士:相似的代码尽量用循环处理,公共的变量使用全局变量(成员变量)定义
相关内容:选择 《Java核心技术 卷1》查找相关笔记
评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步
公众号 钰娘娘知识汇总