在Java Lanterna中使用ProgressBar
我尝试使用以下内容:
ProgressBar Prog=new ProgressBar(0,100,50);
Prog.setValue(0)
//
BufferedReader bf = new BufferedReader(new FileReader(file1));
String line = bf.readLine();
while (line != null) {
lines.add(line);
Prog.setValue((int)(100*(double)lines.size()/MaxLen)); //ProgressBar will ot be updated
line = bf.readLine();
}
bf.close();
我还尝试了此方法:
ProgressBar.DefaultProgressBarRenderer DP=new ProgressBar.DefaultProgressBarRenderer();
DP.drawComponent((TextGUIGraphics)gui.getScreen().newTextGraphics(),Prog );
它不起作用
com.googlecode.lanterna.screen.AbstractScreen$1 cannot be cast to com.googlecode.lanterna.gui2.TextGUIGraphics
GUI是多WindowTextGui属于CONTEX,但由于铸造问题: EDIT2:在组件填充中,
Prog.setRenderer(new ProgressBar.DefaultProgressBarRenderer());
,它需要此:和一个计时器:
Timer timer = new Timer("ProgressBar-timer", true);
timer.schedule(new TimerTask() {
@Override
public void run() {
//Do some thing
}
}, 10, 10);
I tried to use ProgressBar as below:
ProgressBar Prog=new ProgressBar(0,100,50);
Prog.setValue(0)
//
BufferedReader bf = new BufferedReader(new FileReader(file1));
String line = bf.readLine();
while (line != null) {
lines.add(line);
Prog.setValue((int)(100*(double)lines.size()/MaxLen)); //ProgressBar will ot be updated
line = bf.readLine();
}
bf.close();
I also tried this method:
ProgressBar.DefaultProgressBarRenderer DP=new ProgressBar.DefaultProgressBarRenderer();
DP.drawComponent((TextGUIGraphics)gui.getScreen().newTextGraphics(),Prog );
GUI is MultiWindowTextGUI belong to contex, but it does not work because of Cast Problem:
com.googlecode.lanterna.screen.AbstractScreen$1 cannot be cast to com.googlecode.lanterna.gui2.TextGUIGraphics
Edit2:in component aproach, it need this:
Prog.setRenderer(new ProgressBar.DefaultProgressBarRenderer());
and a timer:
Timer timer = new Timer("ProgressBar-timer", true);
timer.schedule(new TimerTask() {
@Override
public void run() {
//Do some thing
}
}, 10, 10);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设您想以某种方式在屏幕上绘制一个进度栏。
问题,
但是
gui.getScreen()。newTextGraphics()
给出textgraphics
and ofeedtextguigraphics
。在给定
渲染器
给定的屏幕上,您可以使用它在屏幕上绘制
progressbar
。Therefore, use the renderer's method
。请参阅 tutorial 3 。
而且似乎既没有构造函数,也没有公共方法,它可以让您
textguigraphics
,请参阅在github repo上进行搜索。而是考虑使用
premprybar
之类的组件。使用组件
是组件。因此,您可以将其简单地添加到您的textgui中:
请参阅用于使用组件。
Assume you wanted to draw a progress-bar on the screen somehow.
Issue
But
gui.getScreen().newTextGraphics()
is givingTextGraphics
and not desiredTextGUIGraphics
.Draw on the screen
Given your
renderer
, you can use it to draw theprogressBar
on your screen.Therefore, use the renderer's method
drawComponent(TextGUIGraphics graphics, ProgressBar component)
:The drawing is a low-level rendering action. See Tutorial 3.
And there seems neither a constructor, nor a public method, that gives you that
TextGUIGraphics
, see the search on the GitHub repo.Instead consider to work with components like
ProgressBar
.Work with components
ProgressBar
is a component. So you can add it simply to your TextGUI:See Tutorial 4 for working with components.