それは有効な方法ですJComboBox#setVisible
が、私のJComboBox
. 私は何か間違ったことをしていますか?そうでない場合、代替手段はありますか?
4730 次
3 に答える
2
あなたはSSCCEを投稿することに興味を示さないので、ここにあなたが質問で述べたことは誤りであり、コードを投稿するまで何もできないことを示しています。
これは私にとってはうまくいきます、
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class FrameTest extends JFrame implements ActionListener {
JComboBox test;
public FrameTest() {
setLayout(new FlowLayout());
setSize(550, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton hideJCombo = new JButton("Hide my JCombobox!");
JButton showJCombo = new JButton("Show my JCombobox!");
String course[] = {"This", "is", "a", "sample", "for", "StackOverflow"};
test = new JComboBox(course);
add(hideJCombo);
add(test);
add(showJCombo);
hideJCombo.setActionCommand("hide");
showJCombo.setActionCommand("show");
hideJCombo.addActionListener(this);
showJCombo.addActionListener(this);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new FrameTest().setVisible(true);
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
if ("hide".equals(e.getActionCommand())) {
test.setVisible(false);
System.out.println("hide");
} else if ("show".equals(e.getActionCommand())) {
test.setVisible(true);
}
}
}
于 2012-05-12T15:59:40.077 に答える
1
コードを投稿するまで、誰もあなたの質問に答えることはできません。ただし、「代替手段」の質問についてはお答えします。
「setEnabled(false)」を使用して無効にすることができます
JPanel 内にある場合は、「remove()」メソッドとそのメソッドの他のオーバーロードされたバージョンを使用して削除できます。
「setEditable(false)」を使用して編集不可に設定できる場合があります。とにかくまだ試していない
于 2012-05-12T17:27:25.863 に答える
1
SSCCEの作成に時間を費やした理由もわかりませんが、このコードは期待どおりに機能します。コードと比較して違いを探すことをお勧めします
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class ComboboxDemo {
private static JFrame createFrame(){
JFrame result = new JFrame( "ComboboxDemo" );
final JComboBox<String> combobox = createCombobox();
result.add( combobox, BorderLayout.CENTER );
JCheckBox toggleVisibility = new JCheckBox( "Toggle visibility" );
toggleVisibility.setSelected( combobox.isVisible() );
toggleVisibility.addItemListener( new ItemListener() {
@Override
public void itemStateChanged( ItemEvent e ) {
combobox.setVisible( e.getStateChange() == ItemEvent.SELECTED );
}
} );
result.add( toggleVisibility, BorderLayout.SOUTH );
result.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
result.pack();
return result;
}
private static JComboBox<String> createCombobox(){
return new JComboBox<>( new String[]{"foo", "bar", "StackOverflow", "Hello World"} );
}
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
createFrame().setVisible( true );
}
} );
}
}
于 2012-05-12T15:58:50.670 に答える