【发布时间】:2014-10-23 01:58:35
【问题描述】:
我有一个扩展 JFrame 的类,上面有十个单选按钮,我使用了各种 JPanel 和 GridLayout 来帮助我正确放置它们。我正在尝试这样做,以便当您选择单选按钮的组合时,程序将按照您选择它们的顺序在每个单选按钮之间画一条线。但是,我无法让任何东西出现。我不确定我是否没有覆盖正确的方法,是否应该使用 Graphics2D,如果面板隐藏了我正在绘制的任何内容......最好是,我想要一个没有我覆盖的解决方案JPanel 或类似的东西。
public void paintComponent(Graphics g)
{
super.update(g);
if(buttonsSelected>1)
{
g.setColor(new Color(0xE3, 0xC9, 0x39));
for(int k=0;k>4&&lastButton[k+1]!=-1;k++)
{
g.drawLine(buttonTest[lastButton[k]].getX(), buttonTest[lastButton[k]].getY(), buttonTest[lastButton[k+1]].getX(), buttonTest[lastButton[k]].getY());
System.out.println("Ole!");
}
}
}
另外,这是我用来绘制窗格的部分代码
int j=0;
for(int k=0;k<10;k++)
{
buttonTest[k]=new JRadioButton();
buttonTest[k].setActionCommand(Integer.toString(k));
buttonTest[k].setToolTipText(powersDin[k]);
buttonTest[k].addActionListener(new GoddessListener());
buttonTest[k].setEnabled(false);
}
buttonTest[0].setEnabled(true);
buttonTest[6].setEnabled(true);
buttonTest[9].setEnabled(true);
paneGrids[0]=new JPanel();
paneGrids[0].setLayout(new GridLayout(1,7));
paneGrids[0].add(new JLabel()); //adding a blank JLabel lets me pad out the empty cells I don't want to fill
paneGrids[0].add(new JLabel());
paneGrids[0].add(new JLabel());
paneGrids[0].add(buttonTest[j++]);
paneGrids[0].add(new JLabel());
paneGrids[0].add(new JLabel());
paneGrids[0].add(new JLabel());
【问题讨论】:
-
你必须重写每个复选框的绘制方法!否则他们会更新和删除你画的。
-
我试图在按钮之间画一条线,而不是在它们上。而且,当我运行代码时,我应该得到“Ole!”在控制台上,这没有发生。
-
那个“奥莱!”显示并不让我感到惊讶!但是复选框周围有一个矩形区域!
-
不,它没有显示出来!而且,我正在使用单选按钮(尽管您关于它们是矩形的观点可能也适用于它们)
-
对不起,我跳过了!请以最少的方式提供更多代码(只有一个复选框等)。