Java swing removeALL+;重新验证日期+;重新粉刷I don';我不知道如何正确使用它们
首先,我很抱歉成为Java、Swing和英语的noob 我读了很多章节,仍然不知道如何使用这三行Java swing removeALL+;重新验证日期+;重新粉刷I don';我不知道如何正确使用它们,java,swing,paint,removeall,Java,Swing,Paint,Removeall,首先,我很抱歉成为Java、Swing和英语的noob 我读了很多章节,仍然不知道如何使用这三行 removeAll(); revalidate(), repaint(); 这是我的问题。 (正如大多数人谈论的那样) 我想刷新我的面板以删除JtextAreas,并根据组合框选择的项目放置新区域。 我创建了一个开关来实现这一点。 我尝试在不同的地方放置这些命令,但没有任何东西能正常工作 我真的很抱歉,我确实错过了一些明显的东西,但我太新手了,看不到它 这是我的代码:(我只是从我的main中调用它
removeAll();
revalidate(),
repaint();
这是我的问题。
(正如大多数人谈论的那样)
我想刷新我的面板以删除JtextAreas,并根据组合框选择的项目放置新区域。
我创建了一个开关来实现这一点。
我尝试在不同的地方放置这些命令,但没有任何东西能正常工作
我真的很抱歉,我确实错过了一些明显的东西,但我太新手了,看不到它
这是我的代码:(我只是从我的main中调用它)
公共最终类测试窗格扩展了JFrame{
公共TestPane()引发异常{
/*********************def布局**********************/
JFrame desktop=newjframe();
桌面设置尺寸(新尺寸(1200,200));
JPanel principalLayout=新的JPanel();
setLayout(新的GridBagLayout());
GridBagConstraints principalGrid=新的GridBagConstraints();
principalGrid.fill=GridBagConstraints.BOTH;
桌面。添加(principalLayout);
/*********************合同定义**********************/
principalLayout.removeAll();
principalGrid.insets=新的插图(5,5,5,5);
principalGrid.ipady=principalGrid.anchor=GridBagConstraints.CENTER;
principalGrid.weightx=10;
principalGrid.weighty=10;
/****************网格布局******************/
字符串[]项=新字符串[4];
项目[0]=(“DejAffaire”);
第[1]项=(“合同”);
项目[2]=(“公里”);
第[3]项=(“出租车”);
JComboBox comboChoixAdd=新的JComboBox(项目);
//comboChoixAdd.addActionListener(此);
JButton validaddfreis=新JButton(“valider”);
//validAddFrais.addActionListener(此);
JCheckBox checkKM=新JCheckBox(“附加frais kilométrique”);
JCheckBox checkTaxi=新JCheckBox(“固定滑行”);
JCheckBox checkDej=新的JCheckBox(“粘贴frais repas”);
JCheckBox checkHotel=新JCheckBox(“afficher frais d'hébergement”);
/*********ajout dans le gridBagLayout+合同************/
principalGrid.gridx=0;
principalGrid.gridy=0;
添加(新JLabel(“choix du type de frais:”),principalGrid);
//principalGrid.weightx=2;
//principalGrid.weighty=1;
principalGrid.gridx=0;
principalGrid.gridy=1;
添加(comboChoixAdd,principalGrid);
principalGrid.gridx=0;
principalGrid.gridy=2;
principalYout.add(validAddFrais,principalGrid);
principalGrid.gridx=1;
principalGrid.gridy=0;
principalGrid.gridwidth=7;
PrincipalYout.add(新JLabel(“enter les champs du frais:”),principalGrid);
principalGrid.gridwidth=1;
principalGrid.gridx=0;
principalGrid.gridy=3;
添加(新JLabel(“affichage des frais:”),principalGrid);
principalGrid.gridx=2;
principalGrid.gridy=3;
PrincipalYout.add(检查公里,主栅格);
principalGrid.gridx=3;
principalGrid.gridy=3;
添加(checkDej,principalGrid);
principalGrid.gridx=4;
principalGrid.gridy=3;
principalyout.add(checkHotel,principalGrid);
principalGrid.gridx=5;
principalGrid.gridy=3;
PrincipalYout.add(检查滑行,principalGrid);
desktop.setTitle(“测试”);
desktop.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
desktop.setVisible(true);
comboChoixAdd.addActionListener(新建ActionListener(){//添加actionlistner以侦听更改
@凌驾
已执行的公共无效操作(操作事件e){
String s=(String)comboChoixAdd.getSelectedItem();//获取所选项目
开关{
“DejAffaire”案:
principalGrid.gridx=1;
principalGrid.gridy=1;
JTextArea text=新的JTextArea();
text.setText(“测试”);
文本.立根(50,50,50,50);
System.out.println(“.actionPerformed()”);
添加(文本,principalGrid);
PrincipallYout.revalidate();
principalLayout.repaint();
打破
案例“Hebergement”:
principalGrid.gridx=1;
principalGrid.gridy=1;
JTextArea textHotel=新的JTextArea();
textHotel.setText(“azzzzzzzazazazeze”);
textHotel.setBounds(50,50,50,50);
System.out.println(“.actionPerformed()”);
添加(textHotel,principalGrid);
//principalLayout.removeAll();
PrincipallYout.revalidate();
principalLayout.repaint();
System.out.println(“.actionPerformed()”);
打破
案例“公里”:
System.out.println(“.actionPerformed()”);
打破
案例“出租车”:
System.out.println(“.actionPerformed()”);
打破
}
System.out.println(“.actionPerformed2()”);
}
});
comboChoixAdd.setSelectedItem(项目[3]);
}
}`
如果手动调整窗口大小,元素是否正确显示?
removeAll
,这很明显,revalidate
触发一个新的布局过程,更新组件在容器中的大小和位置,repaint
请求一个新的绘制周期,以便在调整其大小时绘制更改的状态。textArea没有离开我尝试了几个地方来放置这些命令,但仍然没有消失我使用的是netbeans 8.2,如果它可能有帮助的话“removeALL+revalidate+repaint,我不知道如何正确使用它们”解决这类问题的“正确”方法是使用一种使这些方法冗余的卡片布局。提示:添加@MadProgrammer(或任何人,@
很重要)通知此人新的评论。用另一个JTextArea替换一个JTextArea有什么意义?看起来您正在这样做,只是给组件一个不同的变量名。这是完全没有必要的。只需使用setText(“”)清除旧文本区域中的文本。如果手动调整窗口大小,元素是否正确显示?removeAll
,这很明显,re
`public final class TestPane extends JFrame {
public TestPane() throws ParseException {
/********************* def layouts **********************/
JFrame desktop = new JFrame();
desktop.setSize(new Dimension(1200, 200));
JPanel principalLayout = new JPanel();
principalLayout.setLayout(new GridBagLayout());
GridBagConstraints principalGrid = new GridBagConstraints();
principalGrid.fill=GridBagConstraints.BOTH;
desktop.add(principalLayout);
/********************* def des contraintes **********************/
principalLayout.removeAll();
principalGrid.insets = new Insets(5, 5, 5, 5);
principalGrid.ipady = principalGrid.anchor = GridBagConstraints.CENTER;
principalGrid.weightx = 10;
principalGrid.weighty = 10;
/**************** objets dans le gridBagLayout ******************/
String[] items = new String[4];
items[0] = ("DejAffaire");
items[1] = ("Hebergement");
items[2] = ("Kilometre");
items[3] = ("Taxi");
JComboBox<String> comboChoixAdd = new JComboBox<>(items);
//comboChoixAdd.addActionListener(this);
JButton validAddFrais = new JButton("valider");
//validAddFrais.addActionListener(this);
JCheckBox checkKM = new JCheckBox("afficher frais kilométrique");
JCheckBox checkTaxi = new JCheckBox("afficher taxi");
JCheckBox checkDej = new JCheckBox("afficher frais repas");
JCheckBox checkHotel = new JCheckBox("afficher frais d'hébergement");
/********* ajout dans le gridBagLayout + contraintes ************/
principalGrid.gridx = 0;
principalGrid.gridy = 0;
principalLayout.add(new JLabel("choix du type de frais :"), principalGrid);
//principalGrid.weightx = 2;
//principalGrid.weighty = 1;
principalGrid.gridx = 0;
principalGrid.gridy = 1;
principalLayout.add(comboChoixAdd, principalGrid);
principalGrid.gridx = 0;
principalGrid.gridy = 2;
principalLayout.add(validAddFrais, principalGrid);
principalGrid.gridx = 1;
principalGrid.gridy = 0;
principalGrid.gridwidth = 7;
principalLayout.add(new JLabel("entrer les champs du frais :"), principalGrid);
principalGrid.gridwidth = 1;
principalGrid.gridx = 0;
principalGrid.gridy = 3;
principalLayout.add(new JLabel("affichage des frais :"), principalGrid);
principalGrid.gridx = 2;
principalGrid.gridy = 3;
principalLayout.add(checkKM, principalGrid);
principalGrid.gridx = 3;
principalGrid.gridy = 3;
principalLayout.add(checkDej, principalGrid);
principalGrid.gridx = 4;
principalGrid.gridy = 3;
principalLayout.add(checkHotel, principalGrid);
principalGrid.gridx = 5;
principalGrid.gridy = 3;
principalLayout.add(checkTaxi, principalGrid);
desktop.setTitle("tests");
desktop.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
desktop.setVisible(true);
comboChoixAdd.addActionListener(new ActionListener() {//add actionlistner to listen for change
@Override
public void actionPerformed(ActionEvent e) {
String s = (String) comboChoixAdd.getSelectedItem();//get the selected item
switch (s) {
case "DejAffaire":
principalGrid.gridx = 1;
principalGrid.gridy = 1;
JTextArea text = new JTextArea();
text.setText("test");
text.setBounds(50, 50, 50, 50);
System.out.println(".actionPerformed()");
principalLayout.add(text, principalGrid);
principalLayout.revalidate();
principalLayout.repaint();
break;
case "Hebergement":
principalGrid.gridx = 1;
principalGrid.gridy = 1;
JTextArea textHotel = new JTextArea();
textHotel.setText("azzzzzzzzzzzzzzzzeazeazeaze");
textHotel.setBounds(50, 50, 50, 50);
System.out.println(".actionPerformed()");
principalLayout.add(textHotel, principalGrid);
//principalLayout.removeAll();
principalLayout.revalidate();
principalLayout.repaint();
System.out.println(".actionPerformed()");
break;
case "Kilometre":
System.out.println(".actionPerformed()");
break;
case "Taxi":
System.out.println(".actionPerformed()");
break;
}
System.out.println(".actionPerformed2()");
}
});
comboChoixAdd.setSelectedItem(items[3]);
}
}`