我想在不同标签被选中时,给一些参数赋不同值,然后在其他方法中通过参数的值来进行判断~代码如下:
全局变量了int index = 0;
然后在JTabbedPane里
jTabbedPane.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent e)
{
index = tabbedPane1.getSelectedIndex();
}
});
jTabbedPane.add("tab1",new JPanel());
jTabbedPane.add("tab2",new JPanel());
然后在界面其他panel处的文本框方法中
if(index == 0)
{
jTextField.setEditable(false);
}
if(index == 1)
{
jTextField.setEditable(true);
}
但是我发现index值只是在最初被选中tab1时赋值为0,而选中tab2时并没反应。为什么?要怎么做才能实现?
全局变量了int index = 0;
然后在JTabbedPane里
jTabbedPane.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent e)
{
index = tabbedPane1.getSelectedIndex();
}
});
jTabbedPane.add("tab1",new JPanel());
jTabbedPane.add("tab2",new JPanel());
然后在界面其他panel处的文本框方法中
if(index == 0)
{
jTextField.setEditable(false);
}
if(index == 1)
{
jTextField.setEditable(true);
}
但是我发现index值只是在最初被选中tab1时赋值为0,而选中tab2时并没反应。为什么?要怎么做才能实现?
我现在改了下,在stateChanged方法里,
if(tabbedPane1.getSelectedIndex() == 1)
{
changeJTextField()
}
再在下面
private void changeJTextField()
{
jTextField.setEditable(true);
}
但是如果这样的话,不是每次需要根据标签改变时进行的判断都得写个方法?
import javax.swing.*;
import javax.swing.event.*;import java.awt.*;public class TabIndex extends JFrame {
private JTextField textField1;
private JTabbedPane tabs;
public TabIndex() {
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
textField1 = new JTextField();
contentPane.add(textField1, BorderLayout.NORTH);
tabs = new JTabbedPane();
tabs.add("Tab 1", new JPanel());
tabs.add("Tab 2", new JPanel());
tabs.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
int index = tabs.getSelectedIndex();
textField1.setEditable(index == 0);
}
});
contentPane.add(tabs, BorderLayout.CENTER);
setSize(400, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) {
new TabIndex();
}}
if (tabs.getSelectedIndex() == 0)
{
canEditable();
}
if(tabs.getSelectedIndex() == 1)
{
cannotEditable();
}
然后
private void canEditable()
{
jTextField.setEditable(true);
}
private void cannotEditable()
{
jTextField.setEditable(false);
}