小编She*_*ley的帖子

在JFrame中用JPanel替换JPanel

我有一个扩展JFrame的类,它有一个BorderLayout.它有两个类型为JPanel的私有实例变量.它们代表按钮面板,称为flipButton和confidenceButtons.单击按钮时,按钮面板将被另一个按钮面板替换.也就是说,如果单击flipButton中的按钮,则flipButton将替换为confidenceButton.我试着这样做:

  private class FlipListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
      remove(flipButton); 
      add(confidenceButtons,BorderLayout.SOUTH);
      validate();
      ...
    }
  } 
  private class ColorListener implements ActionListener{
    ...
    public void actionPerformed(ActionEvent e){
      ...
      remove(confidenceButtons); 
      add(flipButton,BorderLayout.SOUTH);
      validate();
    }
  }

flipButton中的按钮具有FlipListeners,而ConfidentButton中的按钮具有ColorListeners.程序运行时,单击按钮将删除面板,但不会添加任何内容来替换它.我究竟做错了什么?

编辑

CardLayout原来是一个简单易行的解决方案.事实证明,上面的代码确实有效; 问题是我的代码的另一部分中的拼写错误.>.但是,我总是在使用这些方法时遇到了麻烦,我发现CardLayout简化了它.谢谢.

java swing add jpanel

8
推荐指数
2
解决办法
6615
查看次数

Java - 在读取时通过覆盖从文本文件中删除行

我试图从文本文件中删除一行文本而不复制到临时文件.我试图通过使用Printwriter和扫描仪并让它们同时遍历文件来做到这一点,作者写下扫描仪读取的内容并用相同的东西覆盖每一行,直到它到达我想要的行删除.然后,我推进扫描仪而不是编写器,并继续像以前一样.这是代码:

但首先,参数:我的文件名是数字,所以这将读取1.txt或2.txt等,因此f指定文件名.我将它转换为文件的构造函数中的String.Int n是我要删除的行的索引.

public void deleteLine(int f, int n){
 try{
 Scanner reader = new Scanner(new File(f+".txt")); 
 PrintWriter writer = new PrintWriter(new FileWriter(new File(f+".txt")),false); 
 for(int w=0; w<n; w++)
   writer.write(reader.nextLine()); 
 reader.nextLine(); 
 while(reader.hasNextLine())
   writer.write(reader.nextLine());
 } catch(Exception e){
   System.err.println("Enjoy the stack trace!");
   e.printStackTrace();
 }
}
Run Code Online (Sandbox Code Playgroud)

它给了我奇怪的错误.它在堆栈跟踪中显示"NoSuchElementException"和"no line found".它指向不同的线条; 似乎任何nextLine()调用都可以做到这一点.是否可以通过这种方式删除一行?如果是这样,我做错了什么?如果没有,为什么?(顺便说一下,如果你想要这个,那么文本文件大概就是500行.不过,我不知道这是不是很重要,甚至不重要.)

java text-files printwriter

8
推荐指数
1
解决办法
4万
查看次数

Java - 如何将组件的垂直列居中?

这很简单,我想做什么,但我无法想办法.在JFrame或JPanel中,如何垂直居中组件?也就是说,类似于在HTML中使用中心标记.组件位于列中,它们都居中.

我尝试过使用Y_AXIS和PAGE_AXIS的BoxLayout,但它以一种奇怪的方式对齐我的组件.我试图使用FlowLayout设置首选大小,以便它包裹,但它不会居中.除非它真的是唯一的选择,否则我宁愿不使用像GridBagLayout这样强大的东西来做这么简单的事情.救命!

java layout swing center

5
推荐指数
1
解决办法
7407
查看次数

标签 统计

java ×3

swing ×2

add ×1

center ×1

jpanel ×1

layout ×1

printwriter ×1

text-files ×1