相关疑难解决方法(0)

我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?

有几次我因为建议使用以下方法而受到批评:

  1. 有必要对setPreferredSize
  2. 了setMinimumSize
  3. setMaximumSize

Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:

对于布局,答案总是相同的:使用合适的LayoutManager

我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:

  1. 我应该完全避免使用这些方法吗?
  2. 已经定义了这些方法的原因.那我什么时候应该使用它们?在哪种情况下?出于什么目的?
  3. 使用这些方法的负面后果究竟是什么?(我只能考虑在具有不同屏幕分辨率的系统之间添加可移植性).
  4. 我认为任何LayoutManager都不能完全满足所有需要的布局需求.我是否真的需要为布局上的每个小变化实现一个新的LayoutManager?
  5. 如果4的答案是"是",那么这是否会导致LayoutManager类的扩散变得难以维护?
  6. 在我需要定义组件子级之间的比例的情况下(例如,child1应该使用10%的空间,child2 40%,child3 50%),是否可以在不实现自定义LayoutManager的情况下实现这一点?

java swing layout-manager

471
推荐指数
8
解决办法
5万
查看次数

设置X,Y轴-JfreeChart的范围

有关如何为X轴和Y轴设置范围的任何建议.

我的"X轴"范围是"0.00到1.00",相差"0.05".我的意思是0.00 0.05 0.10 0.15 ..... 0.90 0.95 1.00

我的"Y轴"范围从"0.0到1.0",差异为"0.1".我的意思是0.0 0.1 0.2 0.3 0.4 ......... 0.9 1.0

我尝试过这样做,但它没有反映在图表上; 我不知道如何应用它 ChartFactory.createScatterPlot().

final NumberAxis domainAxis = new NumberAxis("X-Axis");
domainAxis.setRange(0.00,1.00);
domainAxis.setTickUnit(new NumberTickUnit(0.1));
final NumberAxis rangeAxis = new NumberAxis("Y-Axis");
rangeAxis.setRange(0.0,1.0);
rangeAxis.setTickUnit(new NumberTickUnit(0.05));

public  JPanel createDemoPanel() {
    XYDataset dataset1 = samplexydataset2();
    JFreeChart jfreechart = ChartFactory.createScatterPlot("Scatter Plot Demo",
        "X", "Y",dataset1, PlotOrientation.VERTICAL, true, true, false);
}
Run Code Online (Sandbox Code Playgroud)

对此有任何帮助都会很棒.

java jfreechart

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

XYline图表JFreeChart中不同系列的不同颜色

我使用JFreeChart创建了XY折线图,有两个数据集,我希望两条线都有不同的颜色.我尝试使用以下代码 -

  XYPlot plot = chart.getXYPlot();
  XYItemRenderer xyir = plot.getRenderer();
  xyir.setSeriesPaint(0, Color.GREEN);
  plot.setDataset(0, xyDataset1);

  xyir.setSeriesPaint(1, Color.blue);
  plot.setDataset(1, xyDataset2);
Run Code Online (Sandbox Code Playgroud)

此外,我尝试使用以下代码,我使用不同的渲染器(不知道这是否是正确的方法) -

  XYPlot plot1 = chart.getXYPlot();
  XYPlot plot2 = chart.getXYPlot();

  XYItemRenderer xyir1 = plot1.getRenderer();
  xyir1.setSeriesPaint(0, Color.GREEN);
  plot1.setDataset(0, xyDataset1);

  XYItemRenderer xyir2 = plot2.getRenderer();
  xyir2.setSeriesPaint(1, Color.blue);
  plot2.setDataset(1, xyDataset2);
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,它都打印出蓝色的线条.怎么了??有什么建议??

java jfreechart

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

如何在JFreeChart中的数轴的域上旋转刻度线标签?

就像在下面的示例中所做的那样,我希望图表域上的刻度线标签旋转45度,如下图所示:http: //left.subtree.org/2007/08/14/rotate -labels-jfreechart的/

区别在于,我想在带有数字轴的散点图上执行此操作.我找不到NumberAxis类中的setCategoryLabelPositions()的等价物.

java axis jfreechart

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

如何更改JFreeChart的大小

我添加了JFreeChart一个JPanel(使用a BorderLayout),它是巨大的.有什么我可以做的让它变小吗?

public void generateChart()
{
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    //set the values of the chart
    for(int i=0; i<8; i++)
    {
        dataset.setValue(income_array[i], "Income",
            Double.toString(percent_array[i]));
    }

    JFreeChart chart = ChartFactory.createBarChart(
        "Required Annual Income for a Variety of Interest Rates",
        "Percent", "Income", dataset, PlotOrientation.VERTICAL,
        false,true, false);
    ChartPanel cp = new ChartPanel(chart);

    chart.setBackgroundPaint(Color.white);
    chart.getTitle().setPaint(Color.black); 
    CategoryPlot p = chart.getCategoryPlot(); 
    p.setRangeGridlinePaint(Color.blue); 

    //cp.setMaximumDrawHeight(5);
    //cp.setMaximumDrawWidth(5);
    //cp.setZoomOutFactor(.1);
    JPanel graph = new JPanel();
    graph.add(cp);
    middle.add(graph, BorderLayout.CENTER);
}   
Run Code Online (Sandbox Code Playgroud)

java layout swing jfreechart sizing

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

使用JfreeChart动态地向XYSeries添加点

我在向XYSeries添加点时遇到问题.我有两节课.一个是Sample(它有一个main方法)而另一个是JfreeChart(它有JfreeChart代码).在我的Sample班级中,我有一个sample[row][2]最初有10行的2D数组,然后我需要调用JfreeChart该类并将它们添加到XYSeries并显示散点图.我设法做到了这一点,但下次我调用Jfreechart该类时,我的数组有25行.

我需要将值添加到XYSeries并在散点图上绘制它们,散点图应显示前面10行的不同颜色值,现在25行值不同颜色......这样就可以了.谁能提出一些建议或例子?

class Sample {

    public static void main(String args[]) {
        System.out.print("(X,Y) Paired Values");
        double[][] sample = new double[row][2];

        for (int g = 0; g < sampe.length; g++) {
            for (int h = 0; h < 2; h++) {
                System.out.print("" + sample[g][h] + ",");
            }
        }
        JfreeChart sample = new JfreeChart("Demo", sample);
    }

    static XYDataset samplexydataset2(double[][] sample) {
        XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
        XYSeries …
Run Code Online (Sandbox Code Playgroud)

java jfreechart

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

在JFreeChart中的XYLineChart顶部放置一个圆圈

我使用JFreeChart绘制了标准的正态分布:

NormalDistributionFunction2D normalDistributionFunction2D = new NormalDistributionFunction2D(0.5, 0.15);
XYDataset dataset = DatasetUtilities.sampleFunction2D(normalDistributionFunction2D, 0.0, 1.0, 1000, "Normal");
JFreeChart chart = ChartFactory.createXYLineChart("MyTitle --, "", "", xySeriesCollection, PlotOrientation.VERTICAL, false, false, false);
Run Code Online (Sandbox Code Playgroud)

标准正态分布

最重要的是,我想在给定点放置一个圆圈.我在计算圆的[x,y]坐标时没有问题,但我不确定如何将它添加到图表中.任何帮助赞赏.我想要实现的MS Paint爆破如下.

在此输入图像描述

java jfreechart

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

标签 统计

java ×7

jfreechart ×6

swing ×2

axis ×1

layout ×1

layout-manager ×1

sizing ×1