bri*_*ium 4 java scaling label axis jfreechart
我在用JFreeChart 1.0.14.如果情节太小/太大,我轴的标签会非常奇怪.我想关闭这种行为,并希望轴标签始终以相同的宽度:高度比打印.

这是一个SSCCE:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
XYSeries series = new XYSeries("series a");
for (int i = 0; i < 100; i++)
series.add(i, Math.sin(i / 2.0) * Math.cos(i / (2.0 + Math.random())));
XYSeriesCollection dataset = new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart("", "x-axis", "y-axis", dataset, PlotOrientation.VERTICAL, false, false, false);
ChartPanel panel = new ChartPanel(chart);
frame.add(panel, BorderLayout.CENTER);
frame.setSize(400, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
它产生标有的输出OK.当我在任一方向上将帧的大小更改为一定量时,轴标签(和刻度标签)开始变形(如标记的两个帧所示stretched).他们的"拉伸因素"同步.
我无法弄清楚如何禁用此"功能"并始终以固定的宽度:高度比显示轴标签.你知道怎么做吗?
Gra*_*amA 11
这是缩放的一个例子.
您需要设置最大和最小绘制高度和宽度ChartPanel.你可以设置一次:
ChartPanel panel = new ChartPanel(chart);
panel.setMaximumDrawHeight(1000);
panel.setMaximumDrawWidth(1000);
panel.setMinimumDrawWidth(10);
panel.setMinimumDrawHeight(10);
Run Code Online (Sandbox Code Playgroud)
使用一些合适的值或添加一个ComponentListener:
frame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
panel.setMaximumDrawHeight(e.getComponent().getHeight());
panel.setMaximumDrawWidth(e.getComponent().getWidth());
panel.setMinimumDrawWidth(e.getComponent().getWidth());
panel.setMinimumDrawHeight(e.getComponent().getHeight());
}
});
Run Code Online (Sandbox Code Playgroud)