JPanel 可见性
JPanel visibility
当 JPanel
设置为不可见时,它仍然是 "touchable" 吗?例如,我的框架上有一个 JPanel
,面板上有按钮。如果我将面板设置为不可见,如果我在按钮可见的地方按下,按钮是否仍然有效?
我要求更好地理解 setVisible
实际上并不是要实现上面所说的。
设置为不可见时仍然有效,但是
如果您不希望它执行它所针对的功能,请使用 .Enabled 方法。
不知道你有没有测试过@Marvin Jude说的。但是对于我的例子,当它的父容器不可见时,实例是不可触及的。
- 使用
panel.setVisible(true);
或 panel.setVisible(true);
更改 JPanel 的可见性。
- 如果
MainPanel
不可见,则不会触发按钮的侦听器。
见下面的代码。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class MyFrame extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public MyFrame(){
MainPanel panel = new MainPanel();
add(panel,BorderLayout.CENTER);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
pack();
panel.setVisible(true);
}
class MainPanel extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
public MainPanel(){
JButton button = new JButton("I am a button");
add(button);
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("JButton is clicked...");
}
});
}
}
public static void main(String args[]){
Runnable runnable = new Runnable() {
@Override
public void run() {
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true);
}
};
SwingUtilities.invokeLater(runnable);
}
}
当 JPanel
设置为不可见时,它仍然是 "touchable" 吗?例如,我的框架上有一个 JPanel
,面板上有按钮。如果我将面板设置为不可见,如果我在按钮可见的地方按下,按钮是否仍然有效?
我要求更好地理解 setVisible
实际上并不是要实现上面所说的。
设置为不可见时仍然有效,但是 如果您不希望它执行它所针对的功能,请使用 .Enabled 方法。
不知道你有没有测试过@Marvin Jude说的。但是对于我的例子,当它的父容器不可见时,实例是不可触及的。
- 使用
panel.setVisible(true);
或panel.setVisible(true);
更改 JPanel 的可见性。 - 如果
MainPanel
不可见,则不会触发按钮的侦听器。
见下面的代码。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class MyFrame extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public MyFrame(){
MainPanel panel = new MainPanel();
add(panel,BorderLayout.CENTER);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
pack();
panel.setVisible(true);
}
class MainPanel extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
public MainPanel(){
JButton button = new JButton("I am a button");
add(button);
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("JButton is clicked...");
}
});
}
}
public static void main(String args[]){
Runnable runnable = new Runnable() {
@Override
public void run() {
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true);
}
};
SwingUtilities.invokeLater(runnable);
}
}