小编Kar*_*120的帖子

从java.io.File获取java.nio.file.Path对象

是否可以从java.io.File?获取Path对象?

我知道你可以使用toFile()方法将路径转换为文件,但我找不到相反的转换.有没有办法在Java 6或更低版本中执行此操作?

java file path java-6

196
推荐指数
4
解决办法
12万
查看次数

自动流程图工具

是否有一个流程图工具可以根据给定的信息自动绘制(对齐,重新定位)图表?

我想在图表中添加块,在它们之间创建关系,然后让软件重新定位块和线,以便它可以轻松读取.然后我可以添加更多的块/关系并重复该过程.

基本上,我想在流程图中设计一个程序而不用计划的麻烦我在哪里可视地放置什么.

我知道有很多工具可用于绘制流程图(例如,Visio,Dia,LucidChart等),但我要求具有此功能的工具(我不知道他们是否拥有它).

我不是要求最好的,我只想要任何能做到这一点.

想法?

编辑:虽然DOT引擎是一个很好的工具,它的输入系统对我不起作用.我希望能够按原样编辑图表(无需通过文本语言输入数据),然后有一个按钮或某种东西,以一种易于阅读的方式重新排列所有元素(例如,少数关系交叉尽可能和类似).

flowchart

28
推荐指数
2
解决办法
5万
查看次数

圆形ArrayList(扩展ArrayList)

所以我的程序需要一种圆形ArrayList.

关于它的只有圆形的东西必须是get(int index)方法,这是原始的:

    /**
     * Returns the element at the specified position in this list.
     *
     * @param  index index of the element to return
     * @return the element at the specified position in this list
     * @throws IndexOutOfBoundsException {@inheritDoc}
     */ 
    public E get(int index) {
        rangeCheck(index);

        return elementData(index);
    }
Run Code Online (Sandbox Code Playgroud)

如果index为-1,则应该获取索引为ArrayList.size() - 1的元素,如果index为ArrayList.size(),则应获取索引为0的元素.

我想到的最简单的实现方法就是简单地从java.util包中扩展ArrayList,然后重写get(int index),这样它就不会为上面的两个索引抛出IndexOutOfBoundsException,而是将它们改为我想要的.它会为任何其他超出范围的索引抛出IndexOutOfBoundsException.

但是,由于elementData(索引)访问a

private transient Object[] elementData;
Run Code Online (Sandbox Code Playgroud)

我无法使它工作,因为我的班级没有看到它,因为它是私人的.

此外,我不想为此使用任何外部库,只是因为我认为没有一个适合我的需求,因为我不想要一个真正的circularArray,但只是它的一部分功能,其余部分是常规的ArrayList.

所以我有两个问题:

我怎样才能做到这一点?有没有办法做到这一点,而无需将整个ArrayList类与AbstractCollection,Collection和Iterable一起复制到我的程序中?这对我来说似乎是糟糕的设计.

如果我能以某种方式使它发挥作用,还有什么我应该注意的吗?如果我进行上述更改,是否会以我希望的方式更改类的行为,还是会有任何其他不需要的行为更改?

编辑: 谢谢你的回答,这就是我所做的:

import java.util.ArrayList;

public class CircularArrayList<E> extends ArrayList<E>
{
    private static final long serialVersionUID …
Run Code Online (Sandbox Code Playgroud)

java arraylist extending circular-list

16
推荐指数
3
解决办法
5万
查看次数

如何等待SwingWorker完成?

我有一个在后台计算的swing工作者,同时在JFrame中更新progressBar.

如何让我的主线程等待doInBackground()完成?

我知道我可以把东西放在done()方法中,但我想知道是否有办法让程序实际等待(该线程是正确的).

类似于模态JDialog的东西.

所以...

SwingWorker a = new SwingWorker();
a.execute

doOtherStuff();
Run Code Online (Sandbox Code Playgroud)

doOtherStuff仅在doInBackground完成后运行,但不将该方法放在SwingWorker的done()方法中.

java swing swingworker

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

将iText中的文本对齐在一行中

创建一行文本的最佳方法是将两个元素对齐到虚线?像这样(给出四行来更好地说明这一点):

   1. some random text
  34. some more random text
 764. here's even more random text
4594. it just never ends
Run Code Online (Sandbox Code Playgroud)

想象的线会通过点或者它们之后的空间.数字正确对齐,文本保持对齐.

我不想使用列表,因为元素可能不是有序的,并且它在设置行间距方面有一定的限制.

java itext

7
推荐指数
1
解决办法
2万
查看次数

JTextArea自动换行调整大小

所以,我在JPanel(BoxLayout)上有JTextArea.我也有Box填充器填充JPanel的其余部分.我需要我的JTextArea以单行高度开始(我可以管理它),并在需要时扩展和减少.

自动换行已启用,我只需要在添加/删除新行时调整它的高度.

我尝试使用documentListener和getLineCount(),但它无法识别wordwrap-newlines.

如果可能的话,我想避免弄乱字体.

而且,没有滚动面板.JTextArea必须始终完全显示.

java swing jtextarea word-wrap

6
推荐指数
1
解决办法
9297
查看次数

Java UIManager键列表

我见过人们使用UIManager来改变一些预先创建的swing组件的字符串(例如JFileChooser).

我在哪里可以找到某种引用,告诉我哪些组件可以更改哪些字符串,以及如何访问它们?

澄清:

我知道这UIManager.put(key, newString);将改变键引用的字符串的文本"newString".

我在哪里可以找到钥匙清单?

java swing uimanager

6
推荐指数
2
解决办法
4342
查看次数

Java Swing - 在运行时动态切换语言环境

我理解如何国际化java程序,但我有一个问题.我的程序中的语言可以随时切换,但我的程序可以存在于许多状态,这意味着它可能有也可能没有多个JLabel,JPanel,JFrame等打开.是否有一个类或方法将当前GUI更新为切换语言,还是必须手动完成?

如果没有其他工作,我只需要用户重新启动程序来切换语言,但运行时更改会很好......

java swing internationalization

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

JScrollPane和JPanel

所以,我正在制作一种文本编辑器,我需要一个JScrollPane来进行垂直导航.但我无法让它发挥作用.

我已经阅读了前十页谷歌搜索结果的每一个怪异教程,我无法让它发挥作用.

可以说我有JFrame(大小1000x800).我想在其中放置一个JPanel(1000x2000),以便它与JFrame水平对齐.我想在JPanel的右侧贴上一个简单的滚动条,这样我就可以了解其余内容.

我缩小了尺寸,我已经将JPanel添加到JScrollBar,反之亦然,将其中一个添加到JFrame,两者都没有,但没有.

所以,在这一点上,我不介意几行完成的代码......

编辑:很好,这是代码......

mWindow = new JFrame(lang.getString("title"));
mWindow.setSize(1000, 800);
mWindow.setLocationRelativeTo(null);
mWindow.setResizable(false);
mWindow.setLayout(null);
mWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mWindow.setVisible(true);

workspace = new JPanel();
workspace.setBounds(0,0, 1000, 1203);
workspace.setBackground(Color.RED);

scroll = new JScrollPane(workspace, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setBounds(0, 20, 600, 600);
//scroll.setLayout(null);
mWindow.getContentPane().add(scroll);
mWindow.repaint();
mWindow.validate();
Run Code Online (Sandbox Code Playgroud)

这显示了JPanel的一部分(600X600,(JScrollPane大小)),并显示滚动条,但不可滚动

java swing jpanel jscrollpane

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

从现有创建自定义swing组件

所以,我有这个JTexrtArea几乎完全满足我的需求.唯一不对的是线间距.我无法设置它.(为什么不使用JTextPane?因为在JTextArea中可以更改间距,而JTextArea比JTextPane更轻,我的程序中有很多这样的东西).

我之前已经问过这个问题,这是我从用户StanislavL得到的答案:


要覆盖JTextArea的行间距,请查看PlainView(用于呈现PLainDocument).

public void paint(Graphics g,Shape a)方法中有以下几行

    drawLine(line, g, x, y);
    y += fontHeight;
Run Code Online (Sandbox Code Playgroud)

因此,您可以调整渲染固定y偏移.

在BasicTextAreaUI方法中创建视图.将其替换为您自己的PlainView实现

public View create(Element elem) {
Document doc = elem.getDocument();
Object i18nFlag = doc.getProperty("i18n"/*AbstractDocument.I18NProperty*/);
if ((i18nFlag != null) && i18nFlag.equals(Boolean.TRUE)) {
    // build a view that support bidi
    return createI18N(elem);
} else {
    JTextComponent c = getComponent();
    if (c instanceof JTextArea) {
    JTextArea area = (JTextArea) c;
    View v;
    if (area.getLineWrap()) {
        v = new WrappedPlainView(elem, area.getWrapStyleWord());
    } else {
        v = …
Run Code Online (Sandbox Code Playgroud)

java swing jtextarea

4
推荐指数
2
解决办法
823
查看次数