java-将JPanel显示到JFrame的另一个类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-将JPanel显示到JFrame的另一个类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2578字,纯文字阅读大概需要4分钟。
内容图文
我有一个主JFrame和三个Java类,其中包含不同的饼图,这些饼图位于面板中.我想在主jframe中调用三个派类.我该怎么办?
//我有三个这样的Chart类在面板内部创建不同的图表
public class PiePanel extends Observer {
Singleton connCC = Singleton.getInstance();
Connection con = null;
Statement stm = null;
PiePanel(Subject s) {
panel = new JPanel();
sub = s;
}
@Override
public void update() {
try {
con = connCC.getDBconnection();
stm = con.createStatement();
ResultSet rs = stm.executeQuery("Select pet_name as pet, count(pet_ID) AS 'count' from Pet group by pet_name");
DefaultPieDataset dataset = new DefaultPieDataset();
while (rs.next()) {
dataset.setValue(rs.getString("pet"), Integer.parseInt(rs.getString("count")));
}
JFreeChart pieChart = ChartFactory.createPieChart("Header", dataset, true, true, false);
PiePlot plot = (PiePlot) pieChart.getPlot();
plot.setSimpleLabels(true);
PieSectionLabelGenerator gen = new StandardPieSectionLabelGenerator(
"{0}: {1} ({2})", new DecimalFormat("0"), new DecimalFormat("0%"));
plot.setLabelGenerator(gen);
panel.add(new ChartPanel(pieChart) {
@Override
public Dimension getPreferredSize() {
return new Dimension(335, 235);
}
});
panel.validate();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
//下面是一个将所有面板放入列表中的类
public class Subject {
private List<Observer> panel = new ArrayList<Observer>();
public Subject(){
panel.add(new BarPanel(this));
panel.add(new AreaPanel(this));
panel.add(new PiePanel(this));
}
public List<Observer> getChart(){
return panel;
}
}
//主要
public class Main {
public static void main(String[] args) {
Subject s = new Subject();
while (true) {
String input = JOptionPane.showInputDialog(null, "Input value:");
if ("d".equals(input) || "w".equals(input)) {
try {
//String value = Integer.parseInt(input);
s.setState(input);
} catch (Exception e) {
System.exit(0);
}
} else {
System.out.println("Wrong Input!");
System.exit(0);
}
}
}
}
现在,我想像另一个图片一样在另一个JFrame类中传递此列表.
解决方法:
您的问题是,您正在以默认方式将三个组件添加到使用BorderLayout的容器中,这导致BorderLayout.CENTER中的每个添加组件都覆盖了之前添加的所有其他组件.如果要显示三个组件,则可以:
>使用BorderLayout常量将组件添加到使用BorderLayout的容器中的不同位置,或者
>使用其他布局,这里可能是GridLayout(3,1),或者
>如果要显示更多组件的更复杂的GUI,则嵌套JPanels,每个都使用自己的布局管理器.
>例如,如果要在侧面显示饼图,则将其放入使用GridLayout的JPanel中,然后将使用JPanel的GridLayout添加到BorderLayout中使用BorderLayout的主GUI中. LINE_END位置,或您想要的任何位置.
另一方面,如果您的目标是响应事件而将一个JPanel换出另一个JPanel,则使用CardLayout允许轻松,有效地交换组件.
内容总结
以上是互联网集市为您收集整理的java-将JPanel显示到JFrame的另一个类全部内容,希望文章能够帮你解决java-将JPanel显示到JFrame的另一个类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。