所以我有一个程序,旨在根据 JSlider 的位置动态更新温度计条(使用drawRect)。我想做的是将该值传递给外部方法,以便我可以使用它来更新矩形的大小。我是一名 VB 人员,所以我不知道如何做到这一点。
这是我的主要类(class):
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class ThermoProject extends JApplet
{
JSlider mySlider;
JPanel sliderPanel;
JPanel northernPanel = new NorthPanel();
JLabel printLabel = new JLabel("");
static int fillSize = 0;
int topSize = 100;
public void init() //init is the "main" for an applet
{
buildSliderPanel();
sliderPanel.setBackground(Color.gray);
add(northernPanel, BorderLayout.NORTH); //separate class
add(printLabel, BorderLayout.WEST); //add label to top
add(sliderPanel, BorderLayout.SOUTH); //add the panel to the south of the borderLayout
}
private void buildSliderPanel()
{
sliderPanel = new JPanel();
//JSlider(direction, beginning, end, initial location)
mySlider = new JSlider(JSlider.HORIZONTAL, 0, 100, 0);
mySlider.setMajorTickSpacing(10);
mySlider.setPaintTicks(true);
mySlider.setPaintLabels(true);
mySlider.setSnapToTicks(true);
//add listener
mySlider.addChangeListener(new SliderListener());
//add to panel
sliderPanel.add(mySlider);
}
public class SliderListener implements ChangeListener
{
public void stateChanged(ChangeEvent e)
{
//change when slider is moved
updateThermo(mySlider.getValue());
//topSize = 100 - fillSize;
//drawRect(x, y, width, height)
//fillRect(x, y, width, height)
repaint();
}
}
}
这是我的子类,它主要用于构建单独的 JPanel。
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class NorthPanel extends JPanel
{
JPanel theNorthernPanel;
int fillSize = 0;
public void paint(Graphics g)
{
//drawRect() and fillRect() args are x, y, width, height
g.drawRect(90, 90, 200, 30);
g.setColor(Color.red);
g.fillRect(90, 90, fillSize, 30);
}
public NorthPanel()
{
JPanel theNorthernPanel = new JPanel();
setPreferredSize(new Dimension(200, 200));
JLabel printLabel = new JLabel(String.valueOf(fillSize));
theNorthernPanel.add(printLabel);
add(theNorthernPanel);
}
public void updateThermo(int temperature)
{
fillSize = temperature;
}
}
最佳答案
试试这个:
NorthPanel NorthernPanel = new NorthPanel();//声明
然后,
northernPanel.updateThermo(mySlider.getValue());//调用
关于java - 将值传递给 Java 中的外部方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27414070/